Skip to content

decivo Accord · Open source, MIT

One source of truth for your design. In Figma, in code and for agents.

decivo Accord keeps colours, spacing, components and the rules behind them in a register inside your repository. When someone changes a value in Figma, Pencil, Claude Design or code, it becomes a proposal. What is safe goes through. The rest is decided by the person who owns that property. Coding agents read the same register and check themselves before every commit.

Free and open sourceVersion 0.1.0Node.js 22+No account, runs locally

$ accord check src/components/Card.tsx
check_change: 1 violation(s), 1 must – fix before committing.

D-001 (must): No hard-coded colours in components
  Why: Only then do register changes apply everywhere,
       and agents do not invent colours.
  src/components/Card.tsx:12:31  #3c6681 → color.brand (var(--brand))
From the demo in the repository: a colour copied from a mock-up is caught before the commit, with the fix.

Sync, or decide.

Sync tools copy values back and forth, and whoever writes last wins. Accord treats every change as a decision with an owner.

Usual token sync compared with decivo Accord
Usual token syncdecivo Accord
Source of truthUsual token sync: whichever tool wrote lastdecivo Accord: a register in Git, reviewed like code
A designer changes a valueUsual token sync: copied into code, or overwritten from codedecivo Accord: a proposal; safe changes go through, the rest goes to the owner
A new in-between shadeUsual token sync: shipsdecivo Accord: breaks the rule “every new colour is a decision”; design decides
A variable deleted in FigmaUsual token sync: disappears from the codedecivo Accord: deletions and breaking changes always need a person, fixed in the code
Both sides changedUsual token sync: last write winsdecivo Accord: three-way comparison against the last agreed state
Coding agentsUsual token sync: guess from the codedecivo Accord: read tokens, contracts and decisions with their reasons over MCP

How it works.

Accord starts from what you already have. Nothing is uploaded; the register lives next to your code.

  1. Step 1

    Install

    One command: npm install -g @decivo/accord-cli. Or run every command with npx.

  2. Step 2

    Create the register

    accord init takes what is there: CSS variables, Tailwind v4, shadcn/ui, token files, Figma or Pencil. Anything it cannot take over is listed as an open point, never dropped silently.

  3. Step 3

    See the drift

    accord diff compares register and code, accord figma status register and Figma, per context, light and dark.

  4. Step 4

    Decide

    Changes become proposals: adopt, reset or reject, on the command line or in the web app. Register, CSS and changelog change together.

  5. Step 5

    Keep it that way

    Agents check themselves with check_change. The GitHub Action checks every pull request and marks the line with the fix.

Four surfaces, one register.

Accord reads every surface and never writes into a design tool. Where a tool lags behind, status says so, and the people in that tool catch up.

  • Figma

    .fig files read directly, without a plugin or Enterprise plan, plus Figma's DTCG export, Tokens Studio and other exports. Collections, modes and aliases.

  • Pencil

    Variables, theme axes and hard-coded colours from .pen files.

  • Claude Design

    Handoff bundles and the design-system project. accord design compares and resets each context.

  • Code

    CSS variables, Tailwind v4 @theme, hard-coded colours and lengths in TS, JS and CSS, component contracts from shadcn/ui.

Every property has one owner.

If another side changes it, the owner gets a proposal, not a sync. Ownership lives in accord.config.yaml: a default per group, exceptions per token.

  • Design

    Colour and type values, spacing, visual variants.

  • Code

    Prop API, behaviour, states, accessibility in the implementation.

  • Register

    Names, rules, deprecations, deletions and the ownership rules themselves.

$ accord figma propose
Proposal from Figma
  Route: owner decides (decides: design)
  Because: breaks a must rule
  blue.600: #3c6681 → #2a5d7c  [owner design]
  ✗ D-002 (must): Colours only from the register
A new shade of blue in Figma does not go through on its own. Design decides.

Agents stop guessing from the code.

The MCP server gives any agent that speaks MCP the same register your team uses, with the reason behind every rule. No model is required; the checks are deterministic.

Connect to Claude Code

$ claude mcp add accord -- npx -y @decivo/accord-mcp --root .

accord export also writes AGENTS.md, a block for CLAUDE.md and DESIGN.md, generated from the register.

get_tokens
Tokens with their CSS variables, per context.
get_component_contract
Variants, props, states and slots of a component.
get_decisions
The rules, each with its why and fix.
check_change
Checks a change before the commit and returns violations with the fix.

Try it in your own repository.

Start with a dry run: it shows what Accord finds and would write, without changing anything.

npm install -g @decivo/accord-cli
accord init --dry-run
accord init
accord diff
Version
0.1.0
Licence
MIT
Requirements
Node.js 22+, git

Frequently asked questions.

What does Accord cost?
Do I need a Figma Enterprise plan?
Does Accord write back into Figma or Claude Design?
What data leaves my machine?
Do I need an AI model?
Is there a hosted version?
Which formats does Accord read?
How mature is Accord?

Want Accord set up in your team?

We set up the register, ownership rules and CI with you and bring Figma and code to one state. 30 minutes about your design system, no obligation.

Request a first call