Design Memory logo

Design Memory

Community
phazurlabs
design-memory

The .sumi/ design memory contract — which files exist, the canonical style.json schema, which command owns which subtree, read order, and merge rules. Use whenever a command reads or writes .sumi/, or when design decisions from an earlier command must survive into a later one.

Overview

Publisherphazurlabs
Repositorysumi
Skill namedesign-memory
Stars
58
Forks
11
Bundled files
1
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by phazurlabs on GitHub. Read the source before you install it.

Installation

Install the Design Memory AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/phazurlabs/sumi/tree/main/skills/design-memory
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/phazurlabs/sumi.git /tmp/sumi
mkdir -p .claude/skills
cp -r /tmp/sumi/skills/design-memory .claude/skills/design-memory
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Design Memory in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Design Memory on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Design Memory is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Design Memory — the .sumi/ contract

.sumi/ is what makes the commands compose. /style decides a visual direction once; /screen, /component, /page, /fix and a dozen others consume it instead of re-inventing a palette every invocation.

That only works if every command agrees on the file shape. Until v4.1.0 none was written down, and four commands wrote .sumi/style.json in four different shapes while other commands read whichever they assumed. This skill is the single definition.

Constants

The canonical .sumi/style.json. Every writer emits this envelope; nobody invents keys.

json
{
  "$sumi": "1",
  "meta": {
    "generated": "ISO-8601 timestamp",
    "updatedBy": ["/style"],
    "sector": "fintech",
    "mood": "professional",
    "platform": "web"
  },
  "project": {
    "framework": "react | vue | svelte | vanilla | swiftui",
    "styling": "tailwind | css | styled-components | swiftui",
    "typescript": true
  },
  "tokens": {
    "$schema": "https://design-tokens.github.io/community-group/format/",
    "color": {},
    "typography": {},
    "space": {},
    "radius": {},
    "shadow": {},
    "duration": {},
    "easing": {},
    "z": {},
    "$themes": { "light": {}, "dark": {} }
  },
  "tone": {
    "formality": "",
    "traits": [],
    "wordsToUse": [],
    "wordsToAvoid": []
  },
  "references": [
    { "app": "", "platform": "", "stealThis": "", "takeaway": "" }
  ]
}

Everything under tokens is W3C DTCG. Everything outside it is Sumi's own envelope, because DTCG has no way to express a sector, a tone of voice, or a list of reference apps.

The file set

FileWritten byHolds
.sumi/style.json/style, /palette, /type, /tokens, /darkthe schema above
.sumi/brief.json/briefpersona, HMW questions, constraints, success criteria
.sumi/map.json/mapsitemap, screen inventory, content hierarchy
.sumi/vision.json/gradevisual direction, designer-DNA match, score
.sumi/wireframe-<screen>.json/wireframelayout structure, component map
.sumi/generated-<asset>.json/generategeneration records, prompts, model, score
.sumi/refs//insposourced references, captures, board.json. Schema in reference-intelligence/references/board-synthesis.md
.sumi/decisions.logany commandappend-only NDJSON: {ts, command, decision, reason, overrides}

Ownership

A writer touches its own subtree and nothing else. This is what allows four commands to share one file without clobbering each other.

CommandOwns
/stylethe whole file — it is the only command that may create it
/palettetokens.color
/typetokens.typography
/tokenstokens.* (serialization only; it does not decide)
/darktokens.$themes.dark
/inspo.sumi/refs/ only
everything elseread-only

Read order

Broad to specific. Later files override earlier ones where they overlap.

  1. brief.json — who it is for and what problem it solves
  2. map.json — what screens exist
  3. refs/board.json — what the references say it should look like
  4. style.json — what it looks like (the decision; wins over the board)
  5. vision.json — the visual bar and DNA match
  6. wireframe-<screen>.json — the layout of the screen actually in play
  7. decisions.log — the running override log; the last entry wins

Merge rules

  1. Read-modify-write, never replace. Load the file, deep-merge your subtree, write it back. Append your command name to meta.updatedBy and refresh meta.generated. A whole-file replacement destroys three other commands' work and is the specific bug this contract exists to prevent.
  2. Precedence: explicit user instruction > design memory > defaults. An instruction in the current turn wins immediately and appends to decisions.log with its reason.
  3. Absent is not empty. No file means "not decided yet" — generate a value and offer to persist it. A file present but partial means "decided" for the sections that exist; fill only the gaps.
  4. Never invent a token when style.json exists. If the palette is on disk, use it. Inventing a second palette mid-session is the most visible way to break the illusion that the commands are one system.
  5. Conflict: ask once. If your write would change a value another command set in a previous session, surface both values in one line and ask. Do not ask twice in a session, and do not silently overwrite.

Routing

For the full JSON Schema of every file, worked merge examples, and the migration note for pre-v4.1.0 files: read references/sumi-file-schemas.md.

Cross-References

  • design-systems-architecture — the DTCG token tiers tokens serializes
  • design-token-presets — vetted starting token sets to seed tokens from
  • sumi-orchestrator — pipelines that span several commands, which is when design memory earns its keep

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Design Memory AI skill do?

The .sumi/ design memory contract — which files exist, the canonical style.json schema, which command owns which subtree, read order, and merge rules. Use whenever a command reads or writes .sumi/, or when design decisions from an earlier command must survive into a later one.

Why use Design Memory on TypingMind?

Because you install it once and use it with any model. Design Memory is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Design Memory in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/phazurlabs/sumi/tree/main/skills/design-memory. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Design Memory?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Design Memory?

As many as you like. As long as a model supports skills, you can use Design Memory with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Design Memory AI skill free?

Yes. It is published on GitHub by phazurlabs under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇