Skip to main content
What an agent needs to know to write the Mzizi language and build with Mzizi ships as an npm package of agent skills, @nyuchi/mzizi-skills. Give an agent the skills so it has the doctrine to hand instead of guessing. Twelve skills in four categories, from the bundle’s index.json at version 0.20.0 (the latest on npm on 12 November 2026): mzizi-language and mzizi-roots are new in 0.8.0, digital-hygiene in 0.9.0, progress-report in 0.10.0, mzizi-architecture in 0.14.0, mukoko-design (restored) in 0.15.0, and ship-release, registry-propagation and pr-gates in 0.18.0. 0.19.0 adds no skill: it corrects facts in the release skills and in two language and component skills. 0.20.0 adds none either: it quotes every skill’s frontmatter description, removes the curl-from-unpkg rows from the three release skills, and points them at the mzizi-dev plugin. The React (TSX) build of the components is the deprioritised secondary in every skill that mentions it.

The spacing floor

The mzizi-design skill teaches the spacing floor (14px inset, 7px gaps, 1.5 body line height), the tests that hold it and mzizi check. That change is in the bundle from 0.17.0, and 0.20.0 (the latest on npm on 12 November 2026) carries it.

Categories

From 0.10.0 every index.json entry has a category, from the list in the bundle’s index.schema.json: Load the dev skills before any dev work: mzizi_get_skills with category: "dev" on the MCP server, or @nyuchi/mzizi-skills from npm. Every Mzizi repository’s AGENTS.md asks for this. Skill folders stay at skills/<name>/, so install paths do not change.

Renamed and removed skills

Breaking in 0.8.0: the nine 0.7.0 skills became five, with no aliases. Anything that loads a skill by an old name (mzizi_get_skills, GET /v1/skills/<name>, skills/<name>/SKILL.md, a plugin command) must switch to the new name. An old name answers 404 on api.mzizi.dev/v1/skills/<name>.
The owner’s decision of 30 September 2026 was fewer skills that are effective rather than many that are not. Where each 0.7.0 skill went, from the bundle’s README: mzizi-design was called bundu-design before 0.6.0.

Getting the skills

Four ways, serving the same bundle once each has caught up; each says which version it serves. On 12 November 2026 npm, the MCP server, the API (/v1/skills/summary) and the plugins all served 0.20.0, each with all twelve skills (seven in the mzizi plugin, five in mzizi-dev). They can disagree after a release, because the API and the plugin move only when the registry’s dependency is bumped (see how each copy stays current). Connect a client says which of these each AI client can use.

From npm

npx skills add @nyuchi/mzizi-skills does not work: the skills CLI reads that argument as a GitHub repository and fails to clone it. experimental_sync is its route for skills shipped in node_modules. Codex, Cursor, VS Code, Gemini CLI, Antigravity, Zed, OpenCode and Devin Desktop all read .agents/skills/, so the skills load there natively (Cline and Kiro read .cline/skills/ and .kiro/skills/ instead). Every skill’s frontmatter is only name and description, the portable core of the Agent Skills specification, from the release after 0.17.0; see the limits per client.

From the MCP server

mzizi_get_skills on the MCP server lists the skills, or returns one in full. From mzizi-mcp 0.13.0, category returns every skill in one category in full. It is free, with no sign-in and nothing to install, so any MCP client can fetch the skills this way instead of installing the npm package: Claude.ai, ChatGPT and the Claude and OpenAI APIs, which cannot install a package, included. Each skill’s source names where it is authored, mzizi-dev/agent-tools/mzizi-skills/skills/<name>, from mzizi-mcp 0.11.1.

From the API

GET https://api.mzizi.dev/v1/skills lists them, and GET /v1/skills/<name> returns one. GET /v1/skills/summary is the cheap way to check which version a surface is serving: its meta carries version and count.

As a Claude Code plugin

There are two plugins, both from the mzizi marketplace in mzizi-dev/mzizi-registry. The public mzizi plugin carries seven Markdown skills (mzizi-language, mzizi-roots, mzizi-design, mukoko-design, mzizi-backend, mzizi-architecture and discoverability) and connects the Mzizi MCP server. It has no scripts and no hooks, which is what the Claude plugin directory accepts without a verified organisation. The mzizi-dev plugin carries the five dev skills (digital-hygiene, progress-report, ship-release, registry-propagation and pr-gates), the shell scripts three of them ship, and the Mzizi house-rules hooks. On 12 November 2026 the manifests were at 1.10.0 (mzizi) and 0.1.0 (mzizi-dev), both naming the skills of 0.20.0:
The first install line is the one most people need; add mzizi-dev only to work on Mzizi’s own repositories. They live in the plugin/ and plugin-dev/ directories of mzizi-dev/mzizi-registry, which hold byte-for-byte copies of the bundle’s skills/ (the public copy leaves out one favicon the directory cannot read), and the mzizi manifest points the MCP connection at https://mcp.mzizi.dev/mcp. Codex and ChatGPT do not have the plugin yet. mzizi-registry #520 adds OpenAI’s portable manifest (plugin.json and mcp.json) beside the Claude one in plugin/, and a repo marketplace at .agents/plugins/marketplace.json. Until that reaches the registry’s main, codex plugin marketplace add mzizi-dev/mzizi-registry finds no plugin: connect the server with codex mcp add and link the skills into .agents/skills/ instead. See Connect a client.
The plugin and the mzizi-tools marketplace that used to live in the private tooling repository are retired. If you installed them, remove them with /plugin uninstall mzizi@mzizi-tools and /plugin marketplace remove mzizi-tools, then install the public plugin above.

How each copy stays current

The API and the plugin can lag the newest npm release: a release reaches them only when the registry’s dependency is bumped and, for the API, the gateway is re-pinned. Check the versions rather than assuming they agree.

Git is the source of truth

Skills are authored as skills/<name>/SKILL.md, with YAML frontmatter carrying name and description, and listed in an index.json. That bundle is the only home for skill content. There is no database copy and no sync step. The registry and the MCP server each inline the bundle at build time, so bumping the bundle version is a commit, and the commit is what changes what agents read. An older model projected skills into a database table with a sync script; that is gone.
Never edit a skill anywhere but the bundle. Not a copy vendored into a consumer repository, not the plugin’s copy, and not a .claude/skills/*.md file. The next regeneration overwrites them.

Changing a skill

The bundle is built in the private tooling repository, so outside contributors cannot open a pull request against it directly. Report a problem with a skill through the registry’s issue tracker, mzizi-dev/mzizi-registry. For maintainers, the rules the bundle’s own gate enforces:
  1. Edit skills/<name>/SKILL.md. Adding a skill also needs an index.json entry, because consumers read the index and an unlisted skill is invisible.
  2. Bump the version in both package.json and index.json; they move together. Any change to skill text needs a bump, so npm and mzizi_get_skills stay on the same version.
  3. The offline validator checks the version, the index, the frontmatter and the exports map before publish, and needs no credentials.
  4. A merge without a version bump publishes nothing.
  5. Then bump the bundle version the registry depends on, and regenerate its skills and the plugin’s copy, so the API and the plugin serve it. The MCP server builds its copy from the same repository as the bundle, so it picks the change up on its next deploy.