Teach your AI Milda - the skill
The Milda skill is an Agent Skill that teaches an AI assistant the language: how to read, write and fix .milda files, and how to think in tokens, context groups, archetypes and platform-neutral parts instead of writing CSS in Milda's syntax. It checks everything it writes with the real reader and fixes what the reader reports.
#Install
#Claude Code
Add the repository as a plugin marketplace, then install the plugin from it:
/plugin marketplace add mildastudio/milda-skills /plugin install milda@milda
A marketplace you add yourself does not update on its own by default. After a new language version, run claude plugin update milda@milda, or turn on auto-update for the marketplace.
#Any agent that reads Agent Skills
Claude Code, Codex, Cursor and the other agents that read the format:
npx skills add mildastudio/milda-skills
#Claude on the web and desktop
Download the repository's skills/milda folder as a ZIP and upload it under Customize › Skills › Create skill › Upload a skill. Or add the whole repository as a plugin marketplace under Customize › Plugins.
#By hand
Copy skills/milda from the repository into your agent's skills directory. For Claude Code that is ~/.claude/skills/milda, or .claude/skills/milda inside a project.
#What it teaches
The assistant loads the skill whenever Milda, a .milda file or a design system written in Milda comes up, and reads further into it only as far as the task needs.
SKILL.md- the ten rules behind the language in brief (Thinking in Milda tells them at length), the write-check-fix loop, and how CSS ideas map onto Milda words.reference/syntax.md- every statement, each with an example the reader accepts.reference/vocabulary.md- every word the reader accepts: token types, part kinds, facets, states, layout words and literal functions. Generated from the language package.reference/archetypes.md- every archetype with its contract, anatomy and behaviours. Generated from the prelude.examples/acme.milda- a complete design system that checks clean, to copy patterns from.
#It checks its own work
The skill does not let the assistant call a file valid on its own judgement. After every edit it runs milda-check, the command-line reader that ships with the language server, over the whole system:
npx -y -p @mildastudio/milda-lsp milda-check --strict acme/
It gets back the same diagnostics an editor shows, one per line, and fixes them until the reader reports none. A typical first draft written from CSS habits:
acme/button.milda:11:11 error [part.required] a Button requires the part "label" (text) acme/button.milda:11:11 error [facet.danglingToken] facet references missing token "tok.space.md" acme/button.milda:16:16 warning [facet-unknown] unknown facet "background" skipped acme/button.milda:18:11 warning [state-unknown] unknown state "hover" - did you mean 'hovered'? ... 1 file: 2 errors, 2 warnings
Each of these is a mistake the skill's rules exist to prevent, and each names its own fix, so the assistant corrects itself from the language rather than from guesses. A warning is not noise: unknown facet "background" skipped means that line did nothing.
#It moves with the language
The skill targets language surface 0.10 with prelude 0.0.2. It lives beside the language in the Milda repository and is held to the reader on every change: each example in it is parsed, the generated references are compared with a fresh render of the language package, and every version it states has to be the reader's. A language change that would make the skill wrong fails the build until the skill is updated, and the public repository follows within the hour.
#Try it
Once it is installed, ask for a system the way you would describe it to a designer:
Write a Milda design system for Acme: a violet accent, light and dark modes, and a Button and a TextField. Check it with milda-check before you show me.
Paste the result into the Playground to see it rendered live, with no account.