| name | unison-development |
| description | Write, test, update, and repair Unison code using Unison MCP tools when available. Use when working with Unison language files (.u extension), UCM operations, Unison projects, or when `update-definitions` returns `sourceCodeUpdates` for affected definitions that no longer typecheck. An extension to the software-development skill. |
Unison Development
Extends software-development. Use the Unison MCP tools for every operation when they are available in the session. If they are missing, stop and say so rather than falling back to ad hoc UCM commands — the command line bypasses the safeguards below.
Why Unison is different
Unison stores code in the UCM codebase, not in files or Git. Two consequences drive everything else:
- The CLI and
scratch.ufiles are not the source of truth, so editing or running code outside the MCP tools desyncs your work from the codebase. Drive everything through the MCP tools directly, including branch creation. - Git never holds Unison code. A git commit won't capture your changes and
commit-commandsdon't apply, so don't reach for them.
Work in a branch, and use fully qualified names when writing code so references resolve unambiguously.
Branch first
Before any code change, create a branch with mcp__unison__create-branch — working outside a branch mutates shared state. Use a descriptive name like extract-domain-service or fix-login-bug.
Workflow
- Explore:
mcp__unison__view-definitions,mcp__unison__search-definitions-by-name,mcp__unison__list-project-definitionsto understand existing code before writing. - Typecheck:
mcp__unison__typecheck-codeto validate before updating. - Update:
mcp__unison__update-definitionsto apply changes to the codebase. - Test:
mcp__unison__run-teststo verify.
When mcp__unison__update-definitions reports broken dependents
The call returns sourceCodeUpdates when affected definitions no longer typecheck:
-- The definitions below no longer typecheck with the changes above.
-- Please fix the errors and try `update` again.
The server has placed that code in a temporary branch for you to fix. Repair loop:
- Review every affected definition in the
sourceCodeUpdatesresponse. - Fix the type errors, updating signatures where needed, preserving existing behaviour.
- Include every fixed definition in a single
mcp__unison__update-definitionscall — any definition left out is removed from the codebase, so completeness here is not optional. - Repeat until the update succeeds.
Modifying abilities
Changing an ability breaks its dependents, so repair them in the same update. View the ability and its default handler, use mcp__unison__list-definition-dependents to find every caller, and include the ability and all dependents in one mcp__unison__update-definitions call.
Done when
- Code typechecks via the MCP tools.
- Tests pass via
mcp__unison__run-tests. - Fully qualified names are used throughout.