Unison Development
- •Uses
xpskill. - •Use the Unison MCP server commands for all operations.
Core Principles
- •ALWAYS work in branches - create one with an appropriate name
- •NEVER run UCM commands on the command line — use MCP tools only (exception: branch creation)
- •NEVER use scratch.u files — use MCP tools directly
- •Code is stored by the UCM, NOT Git — NEVER suggest git commits for code changes
- •NEVER use commit-helper agent — Unison code is managed by UCM
- •Always use fully qualified names when writing code
- •Use the MCP tools to explore the codebase before writing code
Branch Creation (MANDATORY FIRST STEP)
Before making any code changes, create a branch with the MCP server tool.
Use descriptive branch names like extract-domain-service or fix-login-bug.
Workflow
- •Explore: Use
view-definitions,search-definitions-by-name,list-project-definitionsto understand existing code - •Typecheck: Use
mcp__unison__typecheck-codeto validate code before updating - •Update: Use
mcp__unison__update-definitionsto apply changes directly to the codebase - •Test: Use
mcp__unison__run-teststo verify changes
Handling Typecheck Errors During Update
When update-definitions returns affected definitions that no longer typecheck:
code
-- The definitions below no longer typecheck with the changes above. -- Please fix the errors and try `update` again.
CRITICAL:
- •The MCP server creates a temporary branch with affected code in
sourceCodeUpdates - •Fix ALL affected definitions and include them in the next
update-definitionscall - •DO NOT omit functions — they will be removed from codebase
- •Include all fixes in a single
update-definitionscall
Modifying Abilities
When modifying abilities, include all affected dependents in the same update:
- •View the ability and its
defaulthandler - •Use
list-definition-dependentsto find all callers - •Update the ability AND all dependents together in one
update-definitionscall
Success Criteria
- •All code typechecks successfully via MCP tools
- •Tests pass via
mcp__unison__run-tests - •Fully qualified names used throughout