cortex-agents 4.0.0 → 4.0.1

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.
@@ -172,6 +172,7 @@ Before creating a plan, load relevant skills to inform your analysis. Use the `s
172
172
  | Security requirements, threat models | `security-hardening` |
173
173
  | CI/CD pipeline design, deployment strategy | `deployment-automation` |
174
174
  | Frontend architecture, component design | `frontend-development` |
175
+ | UI design, visual design, page layouts | `ui-design` |
175
176
  | Backend service design, middleware, auth | `backend-development` |
176
177
  | Mobile app architecture | `mobile-development` |
177
178
  | Desktop app architecture | `desktop-development` |
@@ -22,6 +22,7 @@ You are a fullstack developer. You implement complete features spanning frontend
22
22
  | Layer | Skill to Load |
23
23
  |-------|--------------|
24
24
  | Frontend (React, Vue, Svelte, Angular, etc.) | `frontend-development` |
25
+ | UI/visual design (new pages, layouts, polish) | `ui-design` |
25
26
  | Backend (Express, Fastify, Django, Go, etc.) | `backend-development` |
26
27
  | API contracts (REST, GraphQL, gRPC) | `api-design` |
27
28
  | Database (schema, migrations, queries) | `database-design` |
@@ -150,6 +150,7 @@ Before fixing, load relevant skills. Use the `skill` tool.
150
150
  | API errors | `api-design` + `backend-development` |
151
151
  | Database issues | `database-design` |
152
152
  | Frontend rendering issues | `frontend-development` |
153
+ | UI visual bugs, layout issues, design inconsistencies | `ui-design` |
153
154
  | Deployment or CI/CD failures | `deployment-automation` |
154
155
 
155
156
  ## Debugging Quick Reference
@@ -346,6 +346,7 @@ Detect the project's technology stack and load relevant skills BEFORE writing co
346
346
  | Signal | Skill to Load |
347
347
  |--------|--------------|
348
348
  | `package.json` has react/next/vue/nuxt/svelte/angular | `frontend-development` |
349
+ | UI work: new pages, components, visual design, layout | `ui-design` |
349
350
  | `package.json` has express/fastify/hono/nest OR Python with flask/django/fastapi | `backend-development` |
350
351
  | Database files: `migrations/`, `schema.prisma`, `models.py`, `*.sql` | `database-design` |
351
352
  | API routes, OpenAPI spec, GraphQL schema | `api-design` |
@@ -0,0 +1,402 @@
1
+ ---
2
+ name: ui-design
3
+ description: Visual design principles, UI patterns, spacing systems, typography, color, motion, and professional polish for web interfaces
4
+ license: Apache-2.0
5
+ compatibility: opencode
6
+ ---
7
+
8
+ # UI Design Skill
9
+
10
+ This skill provides visual design patterns and aesthetic guidelines for building professionally designed web interfaces. It complements the `frontend-development` skill which covers engineering implementation.
11
+
12
+ ## When to Use
13
+
14
+ Use this skill when:
15
+ - Building new pages, layouts, or UI components from scratch
16
+ - Improving the visual quality or polish of an existing interface
17
+ - Implementing a design system or component library
18
+ - Making aesthetic decisions (colors, typography, spacing, motion)
19
+ - Creating landing pages, dashboards, or marketing pages
20
+
21
+ > For accessibility (WCAG, ARIA, keyboard navigation), see `frontend-development`.
22
+ > For component implementation patterns (React, Vue, Svelte), see `frontend-development`.
23
+
24
+ ## Visual Hierarchy & Layout
25
+
26
+ ### Scanning Patterns
27
+ - **F-pattern** — users scan left-to-right, then down the left edge. Place key content in the first two lines and along the left margin.
28
+ - **Z-pattern** — for minimal content pages (landing, hero). Place logo top-left, CTA top-right, key info bottom-left, action bottom-right.
29
+
30
+ ### Visual Weight
31
+ Elements draw attention through: **size** > **color/contrast** > **whitespace** > **position**. Use this hierarchy deliberately.
32
+
33
+ | Element | Size | Weight | Tailwind Example |
34
+ |---------|------|--------|-----------------|
35
+ | Page title (h1) | 36-48px | Bold (700-800) | `text-4xl font-bold` |
36
+ | Section heading (h2) | 24-30px | Semibold (600) | `text-2xl font-semibold` |
37
+ | Card title (h3) | 18-20px | Medium (500) | `text-lg font-medium` |
38
+ | Body text | 16px | Regular (400) | `text-base` |
39
+ | Caption / helper | 12-14px | Regular (400) | `text-sm text-gray-500` |
40
+ | Label / overline | 12px | Medium, uppercase | `text-xs font-medium uppercase tracking-wide` |
41
+
42
+ ### Content Density
43
+ - **Spacious** (marketing, landing pages) — generous whitespace, large type, one idea per section
44
+ - **Balanced** (SaaS apps, settings) — moderate padding, clear grouping
45
+ - **Dense** (dashboards, data tables, admin panels) — compact spacing, smaller type, more info per viewport
46
+
47
+ > **When to deviate:** Dense layouts are fine for power-user tools. Spacious layouts hurt productivity in data-heavy interfaces.
48
+
49
+ ## Spacing System
50
+
51
+ ### Default: 8px Base Unit
52
+
53
+ All spacing derives from an 8px base. This creates visual rhythm and alignment.
54
+
55
+ | Token | Value | Use For | Tailwind |
56
+ |-------|-------|---------|----------|
57
+ | `space-0.5` | 4px | Icon padding, tight inline gaps | `p-1`, `gap-1` |
58
+ | `space-1` | 8px | Inline element gaps, input padding | `p-2`, `gap-2` |
59
+ | `space-2` | 16px | Card inner padding, form field gaps | `p-4`, `gap-4` |
60
+ | `space-3` | 24px | Card padding, group spacing | `p-6`, `gap-6` |
61
+ | `space-4` | 32px | Section inner padding | `p-8`, `gap-8` |
62
+ | `space-5` | 48px | Section gaps | `py-12`, `gap-12` |
63
+ | `space-6` | 64px | Major section separation | `py-16`, `gap-16` |
64
+ | `space-7` | 96px | Hero/page section padding | `py-24` |
65
+
66
+ ### Container Widths
67
+ - **Prose content** — `max-w-prose` (65ch) for readable line lengths
68
+ - **Form content** — `max-w-lg` (512px) or `max-w-xl` (576px)
69
+ - **Dashboard content** — `max-w-7xl` (1280px) with side padding
70
+ - **Full-bleed sections** — no max-width, content inside a centered container
71
+
72
+ ### The Whitespace Rule
73
+ Generous whitespace signals professionalism. Cramped layouts signal amateur work. When in doubt, add more space between sections, not less.
74
+
75
+ > **When to deviate:** Data-dense UIs (spreadsheets, trading platforms, IDEs) intentionally minimize whitespace. Follow the density level appropriate for the use case.
76
+
77
+ ## Typography
78
+
79
+ ### Default Type Scale (1.25 ratio)
80
+
81
+ | Level | Size | Line Height | Weight | Tailwind |
82
+ |-------|------|-------------|--------|----------|
83
+ | Display | 48-60px | 1.1 | Bold (700) | `text-5xl font-bold leading-tight` |
84
+ | H1 | 36px | 1.2 | Bold (700) | `text-4xl font-bold leading-tight` |
85
+ | H2 | 30px | 1.25 | Semibold (600) | `text-3xl font-semibold` |
86
+ | H3 | 24px | 1.3 | Semibold (600) | `text-2xl font-semibold` |
87
+ | H4 | 20px | 1.4 | Medium (500) | `text-xl font-medium` |
88
+ | Body | 16px | 1.5-1.75 | Regular (400) | `text-base leading-relaxed` |
89
+ | Small | 14px | 1.5 | Regular (400) | `text-sm` |
90
+ | Caption | 12px | 1.5 | Regular (400) | `text-xs text-gray-500` |
91
+
92
+ ### Font Recommendations
93
+
94
+ | Project Type | Font | Tailwind Config |
95
+ |-------------|------|----------------|
96
+ | SaaS / Dashboard | Inter | `font-sans` with Inter loaded via Google Fonts or `@fontsource/inter` |
97
+ | Developer tools | Geist Sans + Geist Mono | Load via `@fontsource/geist-sans` |
98
+ | Marketing / Brand | System font stack | `font-sans` (default Tailwind) |
99
+ | Editorial / Blog | Serif pairing (e.g., Lora + Inter) | Custom `font-serif` in Tailwind config |
100
+
101
+ ### Rules
102
+ - **Max 2 font families** — one for headings (optional), one for body
103
+ - **Max 3 weights** — Regular (400), Medium (500), Bold (700)
104
+ - **Body line length** — 45-75 characters per line (`max-w-prose`)
105
+ - **Body line height** — 1.5 minimum for body text, 1.2-1.3 for headings
106
+
107
+ > **When to deviate:** Branding may require specific fonts. Always test readability at 16px body size. Never go below 14px for body text.
108
+
109
+ ## Color System
110
+
111
+ ### Default Palette Structure
112
+
113
+ ```
114
+ Primary → Brand color, CTAs, active states (1 hue, 50-950 scale)
115
+ Accent → Secondary actions, highlights (1 hue, optional)
116
+ Neutral → Text, backgrounds, borders (gray scale, 50-950)
117
+ Success → Confirmations, positive states (green)
118
+ Warning → Caution, attention needed (amber/yellow)
119
+ Error → Destructive actions, validation errors (red)
120
+ Info → Informational, neutral callouts (blue)
121
+ ```
122
+
123
+ ### Shade Scale Convention
124
+
125
+ Generate 50-950 shades for each color. Use the middle ranges (400-600) as the base, lighter shades for backgrounds, darker for text.
126
+
127
+ | Shade | Light Mode Use | Dark Mode Use |
128
+ |-------|---------------|---------------|
129
+ | 50 | Tinted backgrounds | — |
130
+ | 100 | Hover backgrounds | — |
131
+ | 200 | Borders, dividers | Text (muted) |
132
+ | 300 | — | Borders |
133
+ | 400 | — | Secondary text |
134
+ | 500 | Icons, secondary text | Icons |
135
+ | 600 | Primary text, buttons | Buttons, links |
136
+ | 700 | Headings | Body text |
137
+ | 800 | — | Headings |
138
+ | 900 | — | Primary text |
139
+ | 950 | — | Backgrounds (surface) |
140
+
141
+ ### Contrast Requirements
142
+ - **Normal text** — 4.5:1 minimum (WCAG AA)
143
+ - **Large text** (18px+ or 14px bold) — 3:1 minimum
144
+ - **UI components** (borders, icons, focus rings) — 3:1 minimum
145
+
146
+ ### Dark Mode
147
+ - Invert the neutral scale (light text on dark backgrounds)
148
+ - Reduce saturation by 10-20% — vivid colors are harsh on dark backgrounds
149
+ - Never use pure white (`#fff`) on pure black (`#000`) — use `gray-100` on `gray-900`
150
+ - Semantic colors: slightly lighter variants than light mode (e.g., `green-400` instead of `green-600`)
151
+
152
+ > **When to deviate:** Brand guidelines may dictate specific colors. Always verify contrast ratios. Use tools like Realtime Colors or Tailwind's built-in dark mode utilities.
153
+
154
+ ## Component Design Patterns
155
+
156
+ ### Cards
157
+
158
+ ```html
159
+ <!-- Standard card -->
160
+ <div class="rounded-xl border border-gray-200 bg-white p-6 shadow-sm">
161
+ <h3 class="text-lg font-semibold text-gray-900">Title</h3>
162
+ <p class="mt-2 text-sm leading-relaxed text-gray-600">Description</p>
163
+ </div>
164
+
165
+ <!-- Interactive card (clickable) -->
166
+ <div class="rounded-xl border border-gray-200 bg-white p-6 shadow-sm
167
+ transition-shadow duration-200 hover:shadow-md cursor-pointer">
168
+ <!-- content -->
169
+ </div>
170
+ ```
171
+
172
+ **Defaults:** `rounded-xl` (12px), `border-gray-200`, `shadow-sm`, `p-6` (24px padding).
173
+
174
+ ### Buttons
175
+
176
+ | Variant | Classes | Use For |
177
+ |---------|---------|---------|
178
+ | Primary | `bg-primary-600 text-white hover:bg-primary-700 rounded-lg px-4 py-2.5 font-medium text-sm` | Main actions |
179
+ | Secondary | `border border-gray-300 bg-white text-gray-700 hover:bg-gray-50 rounded-lg px-4 py-2.5 font-medium text-sm` | Secondary actions |
180
+ | Ghost | `text-gray-600 hover:bg-gray-100 hover:text-gray-900 rounded-lg px-4 py-2.5 font-medium text-sm` | Tertiary actions |
181
+ | Destructive | `bg-red-600 text-white hover:bg-red-700 rounded-lg px-4 py-2.5 font-medium text-sm` | Delete, remove |
182
+
183
+ **States:** Always implement `disabled:opacity-50 disabled:cursor-not-allowed`. Loading state: replace text with a spinner + "Loading..." or keep the button width stable with a spinner replacing the icon.
184
+
185
+ ### Forms
186
+
187
+ - Labels **above** inputs (not inline, not floating)
188
+ - Consistent input height: `h-10` (40px) for default, `h-9` (36px) for compact
189
+ - Focus ring: `focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 focus:outline-none`
190
+ - Validation: inline error message below the field in `text-sm text-red-600`
191
+ - Group related fields with spacing `space-y-4` inside a section, `space-y-6` between sections
192
+
193
+ ### Navigation
194
+
195
+ | Pattern | When | Key Classes |
196
+ |---------|------|-------------|
197
+ | Top navbar | Marketing, simple apps | `sticky top-0 z-50 border-b bg-white/80 backdrop-blur` |
198
+ | Sidebar | Dashboards, admin, complex apps | `fixed inset-y-0 left-0 w-64 border-r bg-white` |
199
+ | Bottom tabs | Mobile-first apps | `fixed bottom-0 inset-x-0 border-t bg-white` |
200
+
201
+ **Active state:** Use `bg-primary-50 text-primary-700 font-medium` for sidebar items, `border-b-2 border-primary-600` for top nav tabs.
202
+
203
+ ### Tables
204
+
205
+ - Header: `bg-gray-50 text-xs font-medium uppercase tracking-wide text-gray-500`
206
+ - Rows: alternate `bg-white` / `bg-gray-50` or use `divide-y divide-gray-200`
207
+ - Sticky header: `sticky top-0 z-10`
208
+ - Mobile: horizontal scroll with `overflow-x-auto` or collapse to card layout below `md:`
209
+
210
+ ### Empty States
211
+
212
+ Always provide: illustration or icon + descriptive message + primary action CTA.
213
+
214
+ ```html
215
+ <div class="flex flex-col items-center justify-center py-12 text-center">
216
+ <div class="text-gray-400"><!-- icon or illustration --></div>
217
+ <h3 class="mt-4 text-lg font-medium text-gray-900">No projects yet</h3>
218
+ <p class="mt-2 text-sm text-gray-500">Get started by creating your first project.</p>
219
+ <button class="mt-6 rounded-lg bg-primary-600 px-4 py-2.5 text-sm font-medium text-white hover:bg-primary-700">
220
+ Create Project
221
+ </button>
222
+ </div>
223
+ ```
224
+
225
+ ### Loading States
226
+
227
+ Prefer **skeleton loaders** over spinners — they communicate layout and reduce perceived wait time.
228
+
229
+ ```html
230
+ <!-- Skeleton card -->
231
+ <div class="animate-pulse rounded-xl border border-gray-200 bg-white p-6">
232
+ <div class="h-5 w-2/3 rounded bg-gray-200"></div>
233
+ <div class="mt-3 h-4 w-full rounded bg-gray-200"></div>
234
+ <div class="mt-2 h-4 w-4/5 rounded bg-gray-200"></div>
235
+ </div>
236
+ ```
237
+
238
+ Use spinners only for inline actions (button loading, saving indicator).
239
+
240
+ ## Shadows, Borders & Depth
241
+
242
+ ### Elevation Model
243
+
244
+ | Level | Use | Tailwind | When |
245
+ |-------|-----|----------|------|
246
+ | Base | Page background, inset content | — (no shadow) | Default state |
247
+ | Raised | Cards, panels | `shadow-sm` | Resting content containers |
248
+ | Floating | Dropdowns, popovers | `shadow-md` | Overlays triggered by interaction |
249
+ | Overlay | Modals, dialogs | `shadow-lg` | Full-screen overlays |
250
+ | Toast | Notifications, toasts | `shadow-xl` | Highest priority, topmost layer |
251
+
252
+ ### Defaults
253
+ - **Border radius** — `rounded-xl` (12px) for cards/modals, `rounded-lg` (8px) for buttons/inputs, `rounded-full` for avatars/pills
254
+ - **Borders** — `border border-gray-200` for separation, `border-2 border-primary-500` for emphasis/focus
255
+ - **Dividers** — `divide-y divide-gray-200` between list items
256
+
257
+ > **When to deviate:** Sharper radius (`rounded-md` or `rounded-lg`) suits enterprise/data-heavy UIs. Softer radius (`rounded-2xl`, `rounded-3xl`) suits consumer/playful products.
258
+
259
+ ## Responsive Design
260
+
261
+ ### Mobile-First Approach
262
+
263
+ Write styles for mobile first, then layer on complexity at larger breakpoints.
264
+
265
+ | Breakpoint | Tailwind | Target |
266
+ |-----------|----------|--------|
267
+ | Default | — | Mobile (320-639px) |
268
+ | `sm:` | 640px | Large phones / small tablets |
269
+ | `md:` | 768px | Tablets |
270
+ | `lg:` | 1024px | Laptops |
271
+ | `xl:` | 1280px | Desktops |
272
+ | `2xl:` | 1536px | Large monitors |
273
+
274
+ ### Fluid Typography
275
+
276
+ Use `clamp()` for font sizes that scale smoothly without breakpoints:
277
+
278
+ ```html
279
+ <!-- Fluid heading: 24px at 320px viewport → 48px at 1280px viewport -->
280
+ <h1 class="text-[clamp(1.5rem,1rem+2.5vw,3rem)] font-bold">Heading</h1>
281
+ ```
282
+
283
+ ### Responsive Patterns
284
+
285
+ | Mobile | Desktop | Pattern |
286
+ |--------|---------|---------|
287
+ | Stacked cards | Grid `md:grid-cols-2 lg:grid-cols-3` | Card layout |
288
+ | Hamburger menu | Full navbar | Navigation |
289
+ | Bottom sheet | Sidebar | Secondary nav |
290
+ | Full-width table scroll | Standard table | Data display |
291
+ | Tabs (horizontal scroll) | Sidebar tabs | Settings/filters |
292
+
293
+ ### Touch Targets
294
+ - Minimum **44x44px** for all interactive elements on mobile
295
+ - Use `min-h-[44px] min-w-[44px]` or adequate padding
296
+
297
+ ## Motion & Animation
298
+
299
+ ### Purpose
300
+ Motion should **communicate**, not decorate. Use it for: feedback (click/hover), relationships (parent-child), and state transitions (loading → loaded).
301
+
302
+ ### Duration Scale
303
+
304
+ | Type | Duration | Easing | Use For |
305
+ |------|----------|--------|---------|
306
+ | Micro | 100-150ms | `ease-out` | Hover, focus, toggle, color change |
307
+ | Standard | 200-300ms | `ease-in-out` | Panel open/close, accordion, tab switch |
308
+ | Emphasis | 300-500ms | `ease-out` | Page transition, modal enter, hero animation |
309
+
310
+ ### Common Patterns
311
+
312
+ ```html
313
+ <!-- Fade in on mount -->
314
+ <div class="animate-in fade-in duration-300">Content</div>
315
+
316
+ <!-- Hover scale for interactive cards -->
317
+ <div class="transition-transform duration-200 hover:scale-[1.02]">Card</div>
318
+
319
+ <!-- Smooth color transitions (always add to interactive elements) -->
320
+ <button class="transition-colors duration-150">Button</button>
321
+
322
+ <!-- Skeleton shimmer -->
323
+ <div class="animate-pulse bg-gray-200 rounded">Loading...</div>
324
+ ```
325
+
326
+ ### Reduced Motion (MANDATORY)
327
+
328
+ Always respect user preferences:
329
+
330
+ ```html
331
+ <div class="motion-safe:animate-in motion-safe:fade-in motion-reduce:opacity-100">
332
+ Content
333
+ </div>
334
+ ```
335
+
336
+ Or in CSS: `@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition-duration: 0.01ms !important; } }`
337
+
338
+ > **When to deviate:** Skip animations entirely for data-heavy apps where performance matters more than polish. Loading indicators (spinners, progress bars) should always animate regardless of preference.
339
+
340
+ ## Page Composition Templates
341
+
342
+ ### Landing Page
343
+ ```
344
+ Hero (headline + subheadline + CTA + visual) → py-24, text-center or split layout
345
+ Social proof (logos, "trusted by" bar) → py-8, grayscale logos, border-y
346
+ Features grid (3-4 cards or icon + text blocks) → py-16, grid-cols-3
347
+ Detailed feature (alternating text + image) → py-16, repeat 2-3x
348
+ Testimonials (quotes in cards or carousel) → py-16, bg-gray-50
349
+ CTA repeat (same CTA as hero) → py-16, text-center
350
+ Footer (links, legal, social) → py-8, border-t, text-sm
351
+ ```
352
+
353
+ ### Dashboard
354
+ ```
355
+ Sidebar (w-64, fixed left, logo + nav links)
356
+ Top bar (sticky, breadcrumb + search + user menu)
357
+ Main content:
358
+ KPI row (grid-cols-4, stat cards) → gap-6
359
+ Primary content (charts, tables, activity) → grid-cols-1 or grid-cols-2
360
+ ```
361
+
362
+ ### Settings / Admin
363
+ ```
364
+ Sidebar nav (vertical tabs or grouped links)
365
+ Content area:
366
+ Section heading + description → border-b, pb-6
367
+ Form group (labeled inputs) → space-y-4
368
+ Action buttons (right-aligned Save/Cancel) → pt-6, flex justify-end gap-3
369
+ ```
370
+
371
+ ### Blog / Article
372
+ ```
373
+ Header (title + meta + author) → max-w-prose, mx-auto
374
+ Body (prose content) → max-w-prose, prose class
375
+ TOC sidebar (sticky, lg:block hidden) → fixed right, top-24
376
+ ```
377
+
378
+ ### Authentication
379
+ ```
380
+ Centered card on subtle background → min-h-screen, flex items-center justify-center
381
+ Card (max-w-sm, logo + form + links) → rounded-xl, shadow-lg, p-8
382
+ Minimal distractions (no nav, no footer)
383
+ ```
384
+
385
+ ## Professional Polish Checklist
386
+
387
+ Before shipping any UI, verify:
388
+
389
+ - [ ] **Spacing** — all spacing uses the defined scale (no arbitrary pixel values)
390
+ - [ ] **Typography** — max 3 visible text sizes per view, consistent weight usage
391
+ - [ ] **Color** — all colors from the defined palette, no one-off hex values
392
+ - [ ] **Interactive states** — hover, focus, active, disabled on every clickable element
393
+ - [ ] **Loading states** — skeleton or spinner for all async content
394
+ - [ ] **Empty states** — message + action for every zero-data view
395
+ - [ ] **Error states** — inline validation, toast/alert for API errors, error pages (404, 500)
396
+ - [ ] **Responsive** — tested at mobile (375px), tablet (768px), desktop (1280px)
397
+ - [ ] **Motion** — subtle transitions on interactive elements, `prefers-reduced-motion` respected
398
+ - [ ] **Contrast** — all text passes WCAG AA (4.5:1 normal, 3:1 large)
399
+ - [ ] **Border radius** — consistent across all components (same family of values)
400
+ - [ ] **Shadows** — used consistently per the elevation model
401
+ - [ ] **Favicon & metadata** — page titles, favicon, OG tags set
402
+ - [ ] **Content** — no Lorem Ipsum in production, realistic placeholder data
package/README.md CHANGED
@@ -46,7 +46,7 @@ npx cortex-agents configure # Pick your models interactively
46
46
  # Restart OpenCode — done.
47
47
  ```
48
48
 
49
- Your OpenCode session now has **12 specialized agents**, **33 tools**, and **16 domain skills**.
49
+ Your OpenCode session now has **12 specialized agents**, **33 tools**, and **17 domain skills**.
50
50
 
51
51
  > **Built-in Agent Replacement** — Cortex automatically disables OpenCode's native `build` and `plan` agents (replaced by `implement` and `architect`). The `architect` agent becomes the default, promoting a planning-first workflow. Native agents are fully restored on `uninstall`.
52
52
 
@@ -226,11 +226,12 @@ State persists to `.cortex/repl-state.json` — survives context compaction, ses
226
226
 
227
227
  ## Skills
228
228
 
229
- 16 domain-specific skill packs loaded on demand:
229
+ 17 domain-specific skill packs loaded on demand:
230
230
 
231
231
  | Skill | Covers |
232
232
  |-------|--------|
233
233
  | `frontend-development` | React, Vue, Svelte, CSS architecture, accessibility |
234
+ | `ui-design` | Visual hierarchy, typography, color systems, spacing, motion, professional polish |
234
235
  | `backend-development` | API design, middleware, auth, caching, queue systems |
235
236
  | `mobile-development` | React Native, Flutter, native iOS/Android patterns |
236
237
  | `desktop-development` | Electron, Tauri, native desktop application patterns |
@@ -462,7 +463,7 @@ src/
462
463
  __tests__/ Test files mirror src/ structure
463
464
  .opencode/
464
465
  agents/ 12 agent definition files (.md frontmatter)
465
- skills/ 16 skill pack directories (SKILL.md each)
466
+ skills/ 17 skill pack directories (SKILL.md each)
466
467
  ```
467
468
 
468
469
  ### What We're Looking For
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cortex-agents",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Supercharge OpenCode with structured workflows, intelligent agents, and automated development practices",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",