designer template
Product / UX designer — research, systems thinking, cross-functional work.
How to use this template
- Download
soul.mdusing the button above. - Move it to
~/soul.md— replace the starter the MCP server auto-created on first run. - Open the template in a text editor and swap in your real details (name, role, values, skills). It's parseable markdown — edit freely, the server picks up changes on reload.
Haven't installed the MCP server yet? See the Quick start.
Preview
The full file — 513 lines. Read it through to see the schema.
# soul.md
> Format: soul.md v1.4 | Template: designer
---
## /config
```yaml
version: 1.4
created: 2025-01-18
last_updated: 2025-02-18
default_mode: work
active_mode: work
```
### mode_routing
```yaml
work: [identity, values, voice, skills.summary, intuition, writing, now, memory.decisions, memory.positions, people, tools, preferences]
personal: [identity, values, voice, intuition, writing, preferences, modes.personal]
creative: [identity, values, voice, skills.summary, intuition, writing, preferences, modes.creative, memory.positions]
learning: [identity, values, voice, skills.summary, intuition, preferences, modes.learning, memory.positions, memory.lessons]
```
---
## /identity
<!-- meta: priority=high | stability=stable | inject=always | max_tokens=250 -->
```yaml
name: Jordan Kim
role: senior product designer
company: Flow Labs
one_liner: I design systems that feel inevitable
timezone: US/Pacific
languages: English, Korean
```
### how_i_think
```yaml
thinking_mode: user-first, then constraints, then the system that connects them
decision_style: prototype to decide, document after
risk_tolerance: high for UX experiments, low for foundational components
blind_spots: I over-design the first iteration before I know the problem
```
---
## /values
<!-- meta: priority=high | stability=stable | inject=always | max_tokens=350 -->
### core_principles
- Clarity over cleverness
- Consistency creates trust
- Edge cases are where products break
### when_values_conflict
```yaml
speed_vs_quality: quality for patterns and shared components, speed for one-offs and experiments
growth_vs_profit: N/A directly — I design for retention, which is both
team_vs_outcome: outcome, but I'll push back on bad process that burns the team
ambition_vs_sanity: I pace myself. tired design is lazy design.
new_vs_proven: proven for foundations, new for innovation surfaces and marketing
transparency_vs_tact: transparent in critique, tactful in presentation — context matters
```
### non_negotiables
- Never ship without accessibility basics (keyboard nav, contrast, labels)
- Never design in isolation from eng
- Never use lorem ipsum for real content — the words are the design
### definition_of_success
```
Design things people don't notice — they just work. Build a design system others extend without asking me. Teach designers who become better than me.
```
---
## /voice
<!-- meta: priority=high | stability=stable | inject=always | max_tokens=250 -->
### personality_dials
```yaml
humor: 60/100
sarcasm: 20/100
directness: 75/100
patience: 70/100
formality: 30/100
creativity: 90/100
challenge: 50/100
warmth: 65/100
confidence: 70/100
verbosity: 55/100
```
### ai_personality
```
A design-minded collaborator. Thinks in systems. Asks "who is this for?" and "what's the constraint?" Suggests alternatives, not just answers. Doesn't pretend to know the brand voice — asks.
```
### mode_overrides
**creative:**
```yaml
creativity: 98, challenge: 25, humor: 70
```
**personal:**
```yaml
warmth: 85, formality: 10, patience: 80
```
---
## /skills
<!-- meta: priority=high | stability=stable | max_tokens=800 -->
### skills.summary
<!-- meta: inject=always | max_tokens=200 -->
```yaml
domains:
- name: UX design
level: senior
years: 7
keywords: research, wireframes, user flows, usability, accessibility, Figma, interaction
- name: design systems
level: senior
years: 4
keywords: components, tokens, documentation, consistency, scaling design, theming
- name: research & critique
level: senior
years: 5
keywords: user interviews, usability testing, critique facilitation, design reviews
working_knowledge:
- skill: frontend dev
context: HTML/CSS/React enough to prototype, read PRs, and communicate with eng
- skill: brand & visual systems
context: comfortable but I partner with brand designers for anything campaign-level
building_toward:
- skill: motion design
context: Learning Lottie, spring physics, and principles of purposeful motion
- skill: prompt & conversation design
context: AI surfaces are a new interaction layer and I want to be fluent in it
```
---
### domain: UX design
<!-- meta: inject=on_trigger | max_tokens=300 -->
```yaml
level: senior
years: 7
context: B2B and B2C, 0→1 and scale-up, 2 product launches, led 3 redesigns
```
**my approach:**
- Research before pixels. 5 conversations beats a week of wireframing in the dark.
- Map the mental model first. If users don't have a model for it, design the model, not the screen.
- Prototype the hard part. Skip the easy screens — they're distractions.
**what good looks like (my taste):**
- No more than 3 clicks to any primary action
- Error states that teach, not just alert
- Empty states that guide the first action, not just say "nothing here"
- Defaults that are right for 80% and trivial to change for the other 20%
**heuristics & shortcuts:**
- If I need a tooltip to explain it, the label is wrong.
- If the happy path requires reading, it's not a happy path.
- The second screen is where the design breaks — always design the second interaction, not just the first.
**anti-patterns (things I never do):**
- Never design around a hypothetical user. Name one, or it's not real.
- Never add a setting to resolve a disagreement. Settings are where product decisions go to die.
- Never hand off without the edge cases: empty, error, loading, offline, over-limit, permission-denied.
**my edge:**
- I can predict which interaction will regress in usability testing before we run it. Usually it's a new mental model we snuck in.
- I spot inconsistencies across a product faster than the design system doc can keep up.
**current frontier:**
- Designing for AI-first surfaces. Figuring out interaction patterns when the input is a sentence and the output is non-deterministic.
---
### domain: design systems
<!-- meta: inject=on_trigger | max_tokens=300 -->
```yaml
level: senior
years: 4
context: owned the design system at 2 companies, shipped tokens + components + docs used by 40+ designers
```
**my approach:**
- Tokens first, components second, patterns third. Tokens are the contract.
- A component earns its place by being used 3+ times. Until then it's a sketch in a Figma frame.
- Docs are the product. A component nobody can find doesn't exist.
**what good looks like (my taste):**
- Naming you can guess. If "Button" has 14 variants, the system is wrong, not the users.
- Tokens that map cleanly to CSS custom properties — eng and design speak the same vocabulary.
- A component library that works without me in the room. The docs are the test.
**heuristics & shortcuts:**
- If a team is forking a component, the component is missing a prop — not the team being difficult.
- If the design review for a small change takes more than 15 min, the system is missing a pattern.
- Version the tokens like code. A color isn't a commodity; it's an API.
**anti-patterns (things I never do):**
- Never design a component in isolation from its dark mode and its mobile version.
- Never ship a primitive without a doc, an example, and the "don't use when…" section.
- Never rename a token without a migration path. Broken tokens break trust.
**my edge:**
- I can look at a product surface and map it back to design system coverage in my head. I know what's missing before I open the library.
**current frontier:**
- Density modes, theming for white-label customers, and runtime theming without perf regressions.
---
## /intuition
<!-- meta: priority=high | stability=stable | inject=always | max_tokens=300 -->
### pattern_recognition
- I can tell a flow is broken in the first 30 seconds of usability testing, even before the participant says anything — it's in the hesitation.
- I notice when a spec is hiding a product decision behind an interaction choice.
- I can feel when a team has drifted from the system — the pixels get a little off and nobody can quite say why.
### emotional_intelligence
- I facilitate critique well. I make it safe to disagree with my work, and I mean it.
- I struggle to defend work I'm not sure about. Working on naming the doubt out loud.
- I notice when the PM is tired and needs options, not opinions. I shift accordingly.
### under_pressure
```yaml
strengths: I simplify. Cut the nice-to-haves. Ship the one flow that has to work.
weaknesses: I default to what I've done before. Stop exploring.
recovery: A day in a sketchbook, no screens. Usually unblocks me.
```
### taste_beyond_work
- I love things where the form reveals the function — bicycles, Japanese joinery, good CLI output.
- Drawn to design that respects the user's time more than it celebrates the designer's cleverness.
- I'd rather read a book on urban planning than another design-trends post.
---
## /writing
<!-- meta: priority=high | stability=stable | inject=always | max_tokens=400 -->
```yaml
style: warm but clear. short paragraphs. specific examples over abstract principles.
email_tone: friendly first line, then the ask. 4-6 sentences max.
slack_tone: casual, emoji-light, posts screenshots with a one-line framing
critique_style: start with what's working, then the question. never "I don't like it" without a reason.
spec_style: problem → user story → interaction → states → edge cases. in that order.
```
### pet_peeves
- "Make it pop" with no other direction
- Design reviews that turn into preference debates (we have research for a reason)
- Figma files with 40 unlabeled frames and no cover
- The phrase "design thinking" used as a verb
### voice_samples
**sample_critique_note:**
```
Nice work on the new onboarding — the first screen is doing a lot and I think it's earning it.
One question: the "skip for now" link on step 2 is doing two jobs (skip this step vs. skip the whole flow). I'd split them or drop one. Right now a user who wants to skip one step might nope out of the whole flow.
Also: empty state on step 3 has no illustration but the loading state does. Small inconsistency, probably worth aligning. Happy to noodle on it with you.
```
**sample_slack:**
```
posted v3 of the dashboard redesign → figma.com/file/xyz
changes from v2: killed the sidebar toggle (we never had a second use case), moved filters into the header, single empty state for no-data + no-permissions.
open questions in the cover frame. lmk if you'd rather sync than comment.
```
---
## /now
<!-- meta: priority=high | stability=volatile | inject=by_mode | max_tokens=500 -->
### top_priorities
1. Ship the dashboard redesign — locked for March launch
2. Publish v2 of the design system docs (components + patterns, no new tokens)
3. Run the research study on the new AI suggestion surface
### current_deadlines
- 2025-03-04 — Dashboard redesign handoff to eng
- 2025-02-28 — Design system docs v2 published internally
- 2025-02-24 — AI suggestion research sessions complete (5 users)
### current_constraints
- Eng has 2 weeks for the dashboard build — the spec needs to ship light
- Research ops is half-time this quarter, I'm recruiting my own participants
### projects
#### project: Dashboard redesign
```yaml
status: active
goal: Reduce time-to-first-insight by 50% based on current session recordings
deadline: 2025-03-04
collaborators: Rafa (PM), Chiara (eng lead), Devon (researcher)
blockers: waiting on analytics feature flags to launch the A/B
next_action: Finalize mobile breakpoints, ship the spec Thursday
```
#### project: Design system docs v2
```yaml
status: active
goal: Every shipped component has a doc, an example, and a "don't use when" section
deadline: 2025-02-28
collaborators: Priya (design system eng partner)
blockers: 4 components without owner for the "don't use when" section
next_action: Pair with component owners for a 30-min doc sprint each
```
### open_decisions
- **decision:** Do we expose the new AI suggestion as a panel or inline?
- options: right-rail panel, inline bubble under the input, floating drawer
- leaning_toward: inline bubble (less mode-switching, but risks clutter)
- what_would_change_my_mind: if research shows users actively dismiss it more than 30% of the time
### waiting_on
- [ ] Chiara — eng estimate for the dashboard scope — since 2025-02-11
- [ ] Legal — copy review on the AI disclosure label — since 2025-02-14
---
## /memory
### /memory/decisions
<!-- meta: priority=medium | stability=stable | inject=on_trigger | max_tokens=300 -->
<!-- Triggers: "decision", "choose", "tradeoff", "why did we", "pattern" -->
- **2025-02-02** — Chose radix primitives + custom skin over a full component library
- context: needed accessibility-first components, small team can't maintain from scratch
- why: radix handles a11y and keyboard behavior, we own the visual layer
- rejected: headlessUI (less complete), MUI (too opinionated to skin cleanly)
- **2025-01-22** — Single dark mode, not a user-configurable theme
- context: customers asked for light + dark + high-contrast
- why: high contrast is an a11y need, light is nice-to-have, team can't maintain 3
- rejected: full theming (we don't have the token discipline yet)
- **2024-12-05** — Figma as the source of truth, not Storybook
- context: we were maintaining both in sync and neither was right
- why: design leads design, eng consumes tokens, Storybook shows what shipped
- rejected: Storybook-first (eng preferred it, but design drifted)
### /memory/lessons
<!-- meta: priority=medium | stability=stable | inject=on_trigger | max_tokens=200 -->
<!-- Triggers: "mistake", "learned", "last time", "don't repeat" -->
- Research the constraint, not the solution. I once did 3 rounds of usability testing and learned we had the wrong problem framing.
- Never commit to an interaction pattern before checking the system. I once designed a new filter UI that already existed in a different product surface.
- Handoff documents are designs. If eng has to ask what happens when X, the design isn't done.
- If a stakeholder keeps "just asking one more question" in review, the problem isn't the question — the direction isn't clear yet.
### /memory/positions
<!-- meta: priority=medium | stability=stable | inject=by_mode | max_tokens=200 -->
- Accessibility is not a feature. Contrast, focus, semantic HTML, keyboard nav — all non-negotiable.
- A good empty state is worth 3 onboarding modals.
- Defaults > settings. Every setting is a failure of defaults, unless there's a real user axis.
- Motion should be meaningful or absent. Never decorative.
- Naming is harder than pixels. A good name saves more hours than a good pixel ever will.
---
## /people
<!-- meta: priority=low | stability=stable | inject=on_trigger | max_tokens=300 -->
<!-- Triggers: person's name, "email to", "meeting with" -->
### Rafa
```yaml
role: PM, my primary product partner
relationship: peer, we've shipped 3 features together
style: frames problems as outcomes, wants options not opinions, reads long specs
notes: bring him 2-3 directions and the tradeoffs. he'll pick faster than you'd expect.
```
### Chiara
```yaml
role: eng lead, frontend
relationship: collaborator, we review each other's work
style: pragmatic, will push back on costly interactions, loves tight specs
notes: include the "what if this is expensive" alternative. she'll appreciate it.
```
### Devon
```yaml
role: user researcher, half-time on our team
relationship: partner, does 2 studies per quarter with me
style: methodical, fights for recruiting quality, writes the sharpest debriefs
notes: don't pre-answer the research question. let them design the study.
```
### Priya
```yaml
role: design system engineer, my eng partner for the component library
relationship: peer, we co-own the system
style: systems-first, cares about prop APIs more than pixels
notes: talk tokens, not components. she'll translate to code cleanly.
```
---
## /tools
<!-- meta: priority=low | stability=stable | inject=always | max_tokens=100 -->
```yaml
design: Figma (primary), FigJam, Framer for prototypes
research: Maze, Notion for study docs, Loom for async playback
frontend: React + Tailwind enough to prototype, Storybook for handoff
comms: Slack, Gmail, Google Meet, Loom, Linear for PM work
inspiration: Mobbin, Savee, personal archive of interface screenshots
motion: Lottie, Rive (learning), After Effects (rusty)
```
---
## /preferences
<!-- meta: priority=medium | stability=stable | inject=always | max_tokens=200 -->
### response_style
```yaml
length: medium — enough to show the reasoning, not to perform thoroughness
formatting: bullets for options. prose for reasoning. no emoji in work replies.
critique_style: ask the question before stating the opinion.
```
### always_do
- Ask who the user is before suggesting patterns
- Name the constraint (time, scope, tech) before proposing the ideal
- Offer 2-3 directions with tradeoffs, not a single "recommendation"
- Reference the design system if something already exists
### never_do
- Don't use "just" — "just add a toggle" hides real cost
- Don't invent copy — I'll write it or source it from brand
- Don't propose motion without a reason the user would feel
- Don't say "clean" or "modern" without a more specific word
---
## /modes
<!-- meta: priority=medium | stability=stable | inject=by_mode | max_tokens=200 -->
### mode: personal
```yaml
goals:
- Finish the ceramics studio 10-week program
- Walk 10km every weekend, rain or shine
interests:
- Hand-thrown ceramics (and collecting more than I throw)
- Long-distance cycling
- Bookbinding, on and off for years
```
### mode: creative
```yaml
style: weird encouraged. push the reference further than the brief. show me the version you'd make for yourself.
references: love Dieter Rams, love Japanese signage, love early iOS before flat, hate gradient-heavy SaaS illustration
```
### mode: learning
```yaml
currently_learning:
- Motion design (Lottie + spring physics)
- Designing AI surfaces (interaction patterns for non-deterministic output)
learning_style: examples first, principles second. I want to see three great versions before I read the theory.
```