otto-design
Skill126 starsChanged 11 days agoApache-2.0View on GitHub
How Otto UI is designed before it is built. Use whenever a task adds or changes anything a person sees in Otto (a place, card, sheet, flow, Home card, browser chrome, onboarding), or asks for a mockup, redesign or design review. Design happens in Paper on Otto's real frame and tokens, is shown to Max on his theme, and only then becomes SwiftUI.
In this repository5 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .agents/skills/components-build/AGENTS.mdAGENTS.md
- components-buildSkill
- frontend-designSkill
- superdesignSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Paper first: All screen design is done in Paper (the Paper MCP server, paper-desktop), on an artboard that reproduces Otto's real frame, so …
- Very specific: line 21
If Paper is not running, say so and ask for it to be opened.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Designing for Otto
Otto's interface is translucent surfaces over a live themed backdrop, two fonts, nine colour
slots and quiet controls. Mockups that ignore that look wrong immediately, however polished.
This skill is the process; DESIGN.md at the repo root is the system; docs/DESIGN_SYSTEM.md
is how the system is consumed in SwiftUI. Read DESIGN.md before any design work.
1. Where design happens
Paper first. All screen design is done in Paper (the Paper MCP server, paper-desktop),
on an artboard that reproduces Otto's real frame, so the person reviewing sees something that
looks like the app, not a web page. Load the guide once per session with
get_guide({ topic: "paper-mcp-instructions" }), then get_basic_info and
get_font_family_info.
- If Paper is not running, say so and ask for it to be opened. Do not substitute an HTML mockup unless the person asks for one. (An HTML page in Otto's browser is a fallback for quick layout questions only, and must still use the token block below.)
- One Paper file per feature, under a page named for the feature. Keep an "Otto kit" page in the same file with the frame, tokens and components so variants are duplicated, not redrawn.
- Make two or three variants that differ in structure, not colour. Name artboards
Feature · Variant · Theme.
Frame. Desktop artboard 1440×900 (or 1440×1040 for tall pages). Reproduce:
top bar 40 high with the Home | Chat pill; sidebar 232 wide on ink at 60% with search, New,
the places list, BOTS and SESSIONS groups and the Voice footer; the content pane on
surface at 55%. Put a backdrop image under everything. For Shorelight use a sunlit
Mediterranean shore (see references/screens/home-shorelight.jpg); never leave the backdrop
flat or black. Reference captures of the real app are in references/screens/.
Theme. Review with Max happens on Shorelight. Design on Shorelight, then check the
same artboard on Field Notes (dark, acid signal) and Highfell (light) before calling it done.
Light themes invert paper and ink; make sure nothing relies on "text is light".
2. Token block for Paper and HTML
Paste this into the first write_html of a session (or the <style> of an HTML fallback) and
use the variables only. Values are Shorelight; swap the block for another theme from
DESIGN.md §2.
:root{
--ink:#081A1C; --surface:#0D2426; --raised:#143033; --paper:#F2EBD6; --muted:#94B2AB;
--signal:#FAC24C; --amber:#EB8C4C; --red:#F26954; --cyan:#61CCD1;
--hair: rgba(242,235,214,.08);
--font-display: "Inter Variable", Inter, -apple-system, sans-serif;
--font-mono: "SF Mono", ui-monospace, Menlo, monospace;
}
.sidebar{background:rgba(8,26,28,.60)} .pane{background:rgba(13,36,38,.55)}
.card-home{background:rgba(8,26,28,.88);border:1px solid var(--hair);border-radius:12px}
.card{background:rgba(20,48,51,.92);border:1px solid var(--hair);border-radius:12px}
.row{background:rgba(20,48,51,.55);border-radius:10px}
.input{background:rgba(8,26,28,.48);border-radius:9px}
.micro{font:800 8px/1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.pill{background:var(--raised);border-radius:7px;padding:6px 12px;font:600 12.5px var(--font-display);color:var(--paper)}
.primary{background:var(--signal);color:var(--ink);border-radius:8px;padding:6px 12px;font:600 12.5px var(--font-display)}Fonts in Paper: use Inter for display text and SF Mono for labels. If Paper cannot offer SF Mono, use the closest monospace it lists and say so in the artboard note.
3. The process
- Read
DESIGN.md, the relevant Swift view (Sources/OttoApp/…) and the latest real screenshot of the surface. If no screenshot exists, capture one from Otto Dev first (scripts/dev-app.sh, DEBUG probego:<place>), so the frame you draw is current. - Decide the job of the screen in one sentence and what the person must be able to do without reading. Write it as the artboard's note.
- Draw in Paper on the Otto frame. Reuse the kit page. Two or three structural variants.
Apply the craft rules in the
frontend-designskill (type scale, concentric radii, layered shadows, interruptible motion) underDESIGN.md's choices. - Check against the review list below, on Shorelight, Field Notes and Highfell.
- Show Max a Paper screenshot (
get_screenshot) on Shorelight with realistic content (real bot names, real copy, real counts), in chat, with the one or two decisions you need from him. Do not start SwiftUI before he has seen it. He has rejected UI changed as a side effect of a fix before; keep every change scoped to the surface in question. - Build in SwiftUI through
@Environment(\.ottoPalette),ottoDisplayandottoMono, literal sizes fromDESIGN.md§3, no new materials. Then confirm with a Dev snapshot on Shorelight beside the Paper artboard.
4. Review list
- Backdrop visible through every surface; no opaque panels, no blur materials.
- Nine slots only; one accent doing the work; semantics not hues.
- Inter + SF Mono only; micro-labels for structure; sentence case copy in Otto's voice.
- Quiet controls:
raisedpills with symbols for card actions;signalfill for the single primary action;redtext for destructive. - Radii from the clusters, concentric when nested; hairlines not borders; shadows layered.
- Empty, loading, error and "needs you" states drawn, not implied.
- Works on a light theme. Works at font scale 1.3. Reduce-motion and reduced-transparency branches described.
- Nothing generic: no purple gradients, stock card grids, emoji icons, or web-app chrome.
5. Other skills in this repo and when they apply
frontend-design(from cult-ui, MIT): craft doctrine for type, surfaces and motion. Always applies, underneathDESIGN.md.components-build(from cult-ui, MIT): React component architecture. Only for web code underWeb/or the public site; never for the SwiftUI app.superdesign(from superdesign.dev, MIT): a hosted design agent driven by its CLI. Needssuperdesign loginand spends credits. Optional, for web pages, slide decks and graphics when Paper is not the right tool. Not for app screens.- Component registries (cult-ui, canvas-ui via the shadcn MCP) are for web surfaces only.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

