co-design
$
npx mdskill add EpicenterHQ/epicenter/co-designTransform rough UI ideas into buildable Svelte interfaces
- Refines product concepts into functional design directions
- Leverages Svelte components and frontend design patterns
- Aligns with user jobs, category patterns, and constraints
- Delivers interactive design decisions for implementation
SKILL.md
.github/skills/co-designView on GitHub ↗
--- name: co-design description: Run an interactive product design pass before implementing UI. Use when the user asks to co-design, explore UI direction, improve a screen, design a feature surface, compare options, create design directions, or turn a rough product idea into a buildable Svelte interface. metadata: author: epicenter version: '1.0' --- # Co-Design Co-design turns a rough UI request into a buildable direction. It is not a visual polish pass. It is the step that decides what the surface is for, what category pattern it should borrow from, and what implementation proof is needed before the design is called done. ## Related Skills Use these skills as the work narrows: - [comparable-apps](../comparable-apps/SKILL.md): before choosing the UX pattern. - [frontend-design](../frontend-design/SKILL.md): when committing to visual direction and implementing UI. - [epicenter-ui](../epicenter-ui/SKILL.md): when choosing local Svelte components and state surfaces. - [prototype](../prototype/SKILL.md): when the answer needs multiple UI variants or a throwaway route. - [web-design-guidelines](../web-design-guidelines/SKILL.md): for final accessibility and interface review. ## Workflow Start with the smallest useful design brief: ```txt Surface: What screen, component, or flow is changing? User job: What is the user trying to get done? Category: Which comparable product category should this feel like? Constraint: What must stay true in this repo, app, or design system? ``` If the request is vague but implementation can still move, state the assumption and continue. Ask a question only when the answer would change the surface or data model. ## Design Pass Before coding a meaningful UI surface: 1. Write a one-sentence thesis for the screen. 2. Name 3 to 5 comparable apps or local surfaces and the pattern being borrowed or refused. 3. Choose one primary direction. For uncertain UI work, create 2 or 3 prototype directions before choosing. 4. Translate the direction into concrete controls, states, density, layout, and copy. 5. Implement with existing Svelte, Tailwind, and `@epicenter/ui` patterns. 6. Verify in the browser when the result is visual, responsive, or interactive. ## Output Shape For design discussion, keep the answer compact: ```txt Thesis: One sentence. Comparisons: App or surface | Pattern | Borrow or refuse Direction: The chosen design and why it fits Epicenter. Implementation: Files or surfaces that need to change. ``` For implementation, do the work directly. After editing, report the files changed, the visual verification performed, and any remaining design risk. ## Rules - Keep Epicenter workspace-first. Identity, sync, and account surfaces should stay recessive unless the product job says otherwise. - Prefer dense, quiet, operational UI for tools. Avoid landing-page composition inside workspace surfaces. - Use local `@epicenter/ui` components before one-off state markup. - Do not create a prototype when the existing app surface is enough to answer the question. - Do not stop at mood words. Every design direction must map to layout, controls, states, and verification. - Do not call the design done without seeing it when visual regressions are plausible.
More from EpicenterHQ/epicenter
- agent-goalWrite `/goal` prompts for long-running agent work in Codex or Claude Code. Use for slash goal, agent goal, durable objective, autonomous coding run.
- approachability-auditReview code as a new TypeScript developer. Use when code feels indirect, clever, hard to follow, or needs a pass on abstractions, names, first-read clarity.
- arktypeArktype: runtime validation, discriminated unions with .merge()/.or(), spread keys. Use when mentioning arktype, type(), union types, command/event schemas.
- attach-primitiveContract and invariants for `attach*` composition primitives in `packages/workspace` (side-effectful building blocks like attachIndexedDb, attachSqlite, attachBroadcastChannel, attachEncryption, attachTable, openCollaboration), and when to use `create*` (pure construction) instead. Use when writing or reviewing an `attach*` or `create*` function, naming a new workspace primitive, composing inside a workspace builder, or deciding whether a primitive registers listeners at call time.
- authEpicenter auth packages: `@epicenter/auth`, `@epicenter/auth-svelte`, OAuth sessions, identity state, auth-owned fetch/WebSocket, and workspace lifecycle binding. Use when editing Epicenter auth clients, session state, hosted sign-in, or auth/workspace integration.
- autumnAutumn billing in Epicenter: `autumn.config.ts`, `autumn-js` credit checks, `atmn` CLI, plan gates, and metered AI usage. Use when changing billing, pricing, credits, plan access, refunds, or usage events.
- better-auth-best-practicesBetter Auth server/client setup: `auth.ts`, generated schema, DB adapters, sessions, cookies, env vars, and plugins. Use when mentioning Better Auth, betterauth, auth handlers, OAuth, email/password, or session configuration.
- better-auth-security-best-practicesBetter Auth security hardening: rate limits, secrets, CSRF, trusted origins, cookies, sessions, OAuth tokens, and audit logging. Use when reviewing auth security, brute-force protection, token handling, or deployment safety.
- change-proposalPresent proposed code changes visually before implementing. Use when: "show me options", "compare approaches", "what should we do", or when changes need before/after comparison.
- claude-code-consultUse this skill when the user asks to consult Claude, ask Claude Code, get another model's take, run a taste check, find cleaner options, or prepare a Claude prompt. Create a bounded second-opinion prompt or run a read-only Claude Code consult, then verify Claude's claims against local files.