MCP Fusion/Operate and integrate/Skills
Skills
SKILL.md is an executable architecture contract your AI coding agent follows: you are the architect, the agent writes MVA code, and @mcpfusion/skills distributes instructions progressively.
MCP Fusion ships with a machine readable architectural contract called SKILL.md. It tells AI coding agents what correct MCP Fusion code looks like: every tool needs a Presenter with .returns(), sensitive fields need .redactPII(), tools come from f.query, f.mutation and f.action. You are the architect. The AI writes the code, and the contract keeps it inside the pattern.
What the scaffold does
npx @mcpfusion/core create writes SKILL.md into your project and injects it into the rule files your agents already read:
.cursorrulesfor Cursor.windsurfrulesfor Windsurf.clinerulesfor Cline
From then on, asking your agent for "a tool that lists unpaid invoices" produces MVA code: a builder, a Presenter, redaction where needed, no raw JSON.stringify. The contract is explicit about failure: any tool missing a Presenter with .returns() is wrong output, and the agent corrects itself.
Ask your agent to read the contract before writing anything: it is one file, and it encodes every convention in this section of the docs. Update it as your team's conventions evolve.
Progressive disclosure with @mcpfusion/skills
Stuffing an entire architecture into a system prompt wastes context and buries the rules that matter for the task at hand. @mcpfusion/skills distributes instructions in three layers:
- The contract layer. A short, always loaded summary of the MVA rules.
- The recipe layer. Per task instructions, loaded when the task matches: adding a tool, composing Presenters, writing tests.
- The reference layer. The full API surface, loaded on demand.
The agent loads layer two only when it touches that task and layer three only when it needs an exact signature. Long coding sessions keep their context budget for the code itself.
npm install @mcpfusion/skillsWhat the contract enforces
| Rule | Why it exists |
|---|---|
Every tool attaches a Presenter with .returns() | The perception layer is the egress firewall |
Sensitive fields go through .redactPII() | PII never reaches the model |
Tools come from f.query, f.mutation, f.action | MCP annotations stay truthful |
No raw JSON.stringify responses | Unshaped data is unreviewed data |
Handlers return Result for expected failures | Errors the agent can act on |
Next steps
- Quickstart: watch the pattern in a working server
- Models and Presenters: what the contract demands
- Testing: make the CI enforce what the agent promises
