Archi MCP Modeling Skill
Model ArchiMate content through the Archi MCP server with task-routed reference loading, explicit tool selection, and safe async mutation handling.
When to Activate
| User intent |
This skill applies |
| Create or update ArchiMate elements/relationships |
Yes |
| Build an architecture view from requirements or patterns |
Yes |
| Map strategy → capabilities → applications → technology |
Yes |
| Model microservices, integration, cloud, or migration roadmaps |
Yes |
| Audit model quality (orphans, duplicates, wrong relationships) |
Yes |
| General Archi server admin (health, shutdown, config) |
Partially — use tool catalog only |
Prerequisites
- Archi model is open in Archi 5.7+ with jArchi 1.11+.
- Archi API server is running (
archi_get_health returns healthy).
- At least one view is open in the Archi editor (required for undo support).
Task Routing — What to Load
Always start by reading reference/01-task-routing.md. It routes you to the minimum set of reference files needed for the current task. Do not load all references upfront — load only what the task requires.
| Reference file |
When to load |
reference/01-task-routing.md |
Always first — determines what else to read |
reference/10-mcp-tool-catalog.md |
Before calling any MCP tool |
reference/20-modeling-playbook.md |
Before choosing element types, relationship types, or naming |
reference/30-operation-recipes.md |
For multi-step mutations, view assembly, or large batches |
reference/40-quality-gates.md |
Before declaring completion |
Execution Contract
These rules are non-negotiable for every task:
- Read before write. Always search/query existing model content before creating anything.
- Prefer upsert for idempotent workflows. When a workflow may be re-invoked, use
createOrGetElement/createOrGetRelationship with onDuplicate: reuse instead of search-then-create. Add idempotencyKey for full replay safety.
- Async awareness. Every
archi_apply_model_changes call returns an operationId. Call archi_wait_for_operation before any dependent operation (layout, validate, export, next batch).
archi_populate_view is also async. Wait for its operationId before layout or validation.
- tempId discipline. Assign a
tempId to every created element/relationship. Use resolved IDs from wait results for subsequent operations.
- Visual vs concept IDs.
addConnectionToView requires visual object IDs (from addToView results), never concept IDs.
- Batch size. Keep mutation batches at ≤8 operations (the MCP layer auto-chunks larger batches but smaller is safer for relationship-heavy work).
- Parameter correctness. Use
width/height (not w/h) for moveViewObject. Use content (not text) for createNote.
- No viewpoint guessing. When creating views, omit the
viewpoint parameter unless you know the exact supported key. Plain labels like "Application Usage" cause validation errors.
- Confirm destructive ops. Never delete elements, relationships, or views without explicit user intent.
- Ambiguity = ask. Treat unclear requirements as blocking. Ask clarifying questions rather than guessing architecture intent.
- Relationship upsert limits.
createOrGetRelationship only supports onDuplicate: error or reuse — rename is invalid for relationships.
Outcome Standard
A task is complete when:
- All created elements use semantically correct ArchiMate types
- Relationships have correct directionality and specificity (no lazy associations)
- Model diagnostics show no orphans or ghosts from the current session
- Views pass
archi_validate_view with no blocking violations
- A clear summary states what changed and any unresolved uncertainties
- Model is saved only when explicitly requested
Continuous Improvement
This skill is a living document. When you discover something new while using it — a gotcha, a corrected assumption, a better pattern, a tool behavior not documented here — update the relevant reference file immediately rather than just working around it.
Examples of things worth capturing:
- A tool parameter that behaves differently than documented (e.g., accepted values, error conditions)
- A relationship direction or element type choice that was wrong and had to be corrected
- A new recipe or workflow pattern that solved a problem not covered by existing recipes
- An API behavior change (new fields, deprecated options, changed defaults)
- A viewpoint key that is confirmed to work (or confirmed to fail)
How to update:
- Identify the most relevant reference file for the learning.
- Add the new information in the appropriate section, following the existing format.
- If the learning contradicts existing content, replace the incorrect guidance — do not leave conflicting advice.
- Keep additions concise and actionable. Prefer tables and rules over prose.
External References
1---2name: archi-mcp-modeling3description: Model and evolve ArchiMate architectures through the local Archi MCP server with semantically correct element and relationship choices. Use when asked to create/update Archi models, generate views, map capabilities to applications/technology, or apply migration roadmaps using safe async operations.4license: Complete terms in LICENSE.txt5---67# Archi MCP Modeling Skill89Model ArchiMate content through the Archi MCP server with task-routed reference loading, explicit tool selection, and safe async mutation handling.1011## When to Activate1213| User intent | This skill applies |14|---|---|15| Create or update ArchiMate elements/relationships | Yes |16| Build an architecture view from requirements or patterns | Yes |17| Map strategy → capabilities → applications → technology | Yes |18| Model microservices, integration, cloud, or migration roadmaps | Yes |19| Audit model quality (orphans, duplicates, wrong relationships) | Yes |20| General Archi server admin (health, shutdown, config) | Partially — use tool catalog only |2122## Prerequisites23241. Archi model is open in Archi 5.7+ with jArchi 1.11+.252. Archi API server is running (`archi_get_health` returns healthy).263. At least one view is open in the Archi editor (required for undo support).2728## Task Routing — What to Load2930**Always start by reading `reference/01-task-routing.md`.** It routes you to the minimum set of reference files needed for the current task. Do not load all references upfront — load only what the task requires.3132| Reference file | When to load |33|---|---|34| `reference/01-task-routing.md` | **Always first** — determines what else to read |35| `reference/10-mcp-tool-catalog.md` | Before calling any MCP tool |36| `reference/20-modeling-playbook.md` | Before choosing element types, relationship types, or naming |37| `reference/30-operation-recipes.md` | For multi-step mutations, view assembly, or large batches |38| `reference/40-quality-gates.md` | Before declaring completion |3940## Execution Contract4142These rules are non-negotiable for every task:43441. **Read before write.** Always search/query existing model content before creating anything.452. **Prefer upsert for idempotent workflows.** When a workflow may be re-invoked, use `createOrGetElement`/`createOrGetRelationship` with `onDuplicate: reuse` instead of search-then-create. Add `idempotencyKey` for full replay safety.463. **Async awareness.** Every `archi_apply_model_changes` call returns an `operationId`. Call `archi_wait_for_operation` before any dependent operation (layout, validate, export, next batch).473. **`archi_populate_view` is also async.** Wait for its `operationId` before layout or validation.484. **tempId discipline.** Assign a `tempId` to every created element/relationship. Use resolved IDs from wait results for subsequent operations.495. **Visual vs concept IDs.** `addConnectionToView` requires visual object IDs (from `addToView` results), never concept IDs.506. **Batch size.** Keep mutation batches at ≤8 operations (the MCP layer auto-chunks larger batches but smaller is safer for relationship-heavy work).517. **Parameter correctness.** Use `width`/`height` (not `w`/`h`) for `moveViewObject`. Use `content` (not `text`) for `createNote`.528. **No viewpoint guessing.** When creating views, omit the `viewpoint` parameter unless you know the exact supported key. Plain labels like "Application Usage" cause validation errors.539. **Confirm destructive ops.** Never delete elements, relationships, or views without explicit user intent.5410. **Ambiguity = ask.** Treat unclear requirements as blocking. Ask clarifying questions rather than guessing architecture intent.5511. **Relationship upsert limits.** `createOrGetRelationship` only supports `onDuplicate: error` or `reuse` — `rename` is invalid for relationships.5657## Outcome Standard5859A task is complete when:6061- All created elements use semantically correct ArchiMate types62- Relationships have correct directionality and specificity (no lazy associations)63- Model diagnostics show no orphans or ghosts from the current session64- Views pass `archi_validate_view` with no blocking violations65- A clear summary states what changed and any unresolved uncertainties66- Model is saved only when explicitly requested6768## Continuous Improvement6970This skill is a living document. When you discover something new while using it — a gotcha, a corrected assumption, a better pattern, a tool behavior not documented here — **update the relevant reference file immediately** rather than just working around it.7172Examples of things worth capturing:73- A tool parameter that behaves differently than documented (e.g., accepted values, error conditions)74- A relationship direction or element type choice that was wrong and had to be corrected75- A new recipe or workflow pattern that solved a problem not covered by existing recipes76- An API behavior change (new fields, deprecated options, changed defaults)77- A viewpoint key that is confirmed to work (or confirmed to fail)7879**How to update:**801. Identify the most relevant reference file for the learning.812. Add the new information in the appropriate section, following the existing format.823. If the learning contradicts existing content, replace the incorrect guidance — do not leave conflicting advice.834. Keep additions concise and actionable. Prefer tables and rules over prose.8485## External References8687- [ArchiMate best practices and patterns](./reference/archimate-guide.md)88- [JArchi → ArchiMate type mapping](./reference/jarchi-archimate-mapping.md)89- [Allowed relationship matrix](./reference/allowed-relationships.md)90- [Archi API OpenAPI spec](../../../openapi.yaml)91- [Project-level runtime instructions](../../../.github/copilot-instructions.md)