Agent skill

Editing Model Diagrams

by goadesign in goadesign/model

Creates, edits, reviews, and regenerates C4 architecture diagrams written with goa.design/model and the mdl CLI.

MITAuto-check passedDevelopment

Install Editing Model Diagrams

skills CLI
$ npx skills add goadesign/model --skill editing-model-diagrams -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install goadesign/model editing-model-diagrams --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/goadesign/model.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cmd/mdl/skills/editing-model-diagrams .claude/skills/editing-model-diagrams && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
editing-model-diagrams
GitHub stars
467
Token cost
~4.2k tokens
SKILL.md length
2,343 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Creates, edits, reviews, and regenerates C4 architecture diagrams written with goa.design/model and the mdl CLI.

  • Works in 3 steps: Represent the real ownership,… → Make that reality readable through the… → Improve visual balance and polish…
  • Changing Model DSL
  • SKILL.md covers Prioritize truth, readability,…, Workflow, Preserve ownership and Verify Goa service coverage, plus 4 more sections
  • Calls go

What it does

Editing Model Diagrams is an agent skill from goadesign/model. Creates, edits, reviews, and regenerates C4 architecture diagrams written with goa.design/model and the mdl CLI. Use when changing Model DSL, model.go or views.go files, system landscape, context, container, component, dynamic, or deployment views, element relationships, boundaries, layout, or generated SVG diagrams.

Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Diagrams. The repository describes itself as: Create your software architecture models and diagrams in Go. The licence is MIT.

When your agent uses it

  • Changing Model DSL
  • System landscape
  • Deployment views
  • Element relationships

Example prompts

  • “/editing-model-diagrams”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Represent the real ownership, dependencies, directions, and runtime
  2. Make that reality readable through the right abstraction level, focused
  3. Improve visual balance and polish without changing or hiding architectural

What it can do on your machine

Read from SKILL.md and the folder at commit fcc7921. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Editing Model Diagrams loads about 4.2k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 2,343 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~4.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from goadesign/model at commit fcc7921, republished under its MIT licence (© goadesign). 2,343 words, ~4,225 tokens.

Download SKILL.mdSave it as .claude/skills/editing-model-diagrams/SKILL.md (or your agent's skills folder).
name
editing-model-diagrams
description
Creates, edits, reviews, and regenerates C4 architecture diagrams written with goa.design/model and the mdl CLI. Use when changing Model DSL, model.go or views.go files, system landscape, context, container, component, dynamic, or deployment views, element relationships, boundaries, layout, or generated SVG diagrams.

Editing Model diagrams

Produce diagrams whose source model is architecturally true and whose rendered views communicate that model without ambiguous ownership.

Prioritize truth, readability, then polish

Use this order when design goals conflict:

  1. Represent the real ownership, dependencies, directions, and runtime behavior.
  2. Make that reality readable through the right abstraction level, focused views, deliberate layout, and clear labels.
  3. Improve visual balance and polish without changing or hiding architectural meaning.

Never omit, reverse, reparent, or relabel architecture merely to make a diagram look cleaner. If a truthful view is unreadable, reduce its question, remove out-of-scope elements, or split it into additional truthful views while keeping the main view representative of the whole system.

Workflow

  1. Read the model definitions, the affected view, and imported model packages.
  2. State the one question the view answers and the expected elements, relationships, and boundaries.
  3. Identify the owner of every element and the source-model relationship for every intended edge.
  4. Choose the C4 view level that answers the question.
  5. Preserve published view keys unless the requested change intentionally renames or removes an output.
  6. Edit Model DSL source. Do not edit generated SVG or JSON output directly.
  7. Regenerate every affected view.
  8. Inspect the rendered diagram, not only the compiling DSL.

Preserve ownership

  • A SoftwareSystem owns the Container elements declared inside it.
  • A Container owns the Component elements declared inside it.
  • Add, AddDefault, AddAll, and imported packages change view membership; they do not change element ownership.
  • A deployment node may contain infrastructure nodes, child deployment nodes, and container instances. A container instance represents deployment of its referenced container; it does not transfer software ownership.
  • Do not redefine or reparent an element to make a layout easier. Correct the model first, then select and arrange the view.
  • A view cannot create a relationship absent from the source model. Do not invent or reverse an edge to complete a desired narrative; report or correct the model contract when evidence supports that change.
  • When a repository inventory reports a missing service or element, verify its ownership and typed callers before adding it. Model the real container and relationships; do not add a name-only placeholder merely to satisfy a check.

Verify Goa service coverage

For repositories whose services are defined by a Goa system design, use the Goa model validator as the service-inventory contract:

  • Verify the system design calls goa.design/plugins/v3/model/dsl.Model(<model package>, <system name>). A goa.design/model dependency or an MDL model package alone does not enable this validation.
  • Map every Goa service to its owned model container. Use ModelContainer when a human-readable container name does not exactly match the plugin's naming format; do not rename model elements or rely on fuzzy string matching.
  • Use ModelNone only when the Goa service is deliberately outside the architecture model's scope, and document why. Never use it merely to make generation pass.
  • Use ModelComplete only when every in-scope model container must correspond to a Goa service. Omit it when the model intentionally includes workers, infrastructure, data stores, or other containers that are not Goa services.
  • Run the repository's Goa generation or model-validation command after model changes. MDL rendering does not execute the Goa service-to-container check.
  • Treat plugin failures as architecture drift. Verify the service's ownership and behavior, add or correct the real container, and then add the explicit service mapping.

Service coverage and view membership are separate. Every owned service must be present in the source model, and the published view set should make each architecturally relevant service visible in at least one purposeful view. Do not force every service into every view or create an inventory-only diagram; split the architecture into focused views and use documentation or a generated catalog for exhaustive inventory.

Enforce truthful boundaries

Treat a rendered boundary as an ownership statement.

  • System boundaries must not overlap other system boundaries.
  • A system boundary may contain only containers and descendants owned by that software system.
  • Container boundaries must not overlap other container boundaries.
  • A container boundary may contain only components owned by that container.
  • A sibling container stays outside another container's boundary, even when both belong to the same software system.
  • A person, external software system, external container, infrastructure node, or any other element not owned by a boundary stays outside that boundary.
  • Nested boundaries must follow the model hierarchy: container inside its owning system and component inside its owning container.
  • Relationships may cross boundaries; their endpoints may not be moved across boundaries to shorten lines.
  • Boundary labels must remain visible and unambiguous.

If automatic or saved layout violates these rules, first verify ownership and view membership. Then reduce or split the view before using intentional manual positions. Never accept false containment as a visual compromise.

Choose the right view

  • Use a system landscape view for people and software systems across the enterprise or domain.
  • Use a system context view for one software system, its users, and external systems it directly interacts with.
  • Use a container view for the containers owned by one software system plus directly related people and external systems or containers.
  • Use a component view for the components owned by one container plus directly related external elements.
  • Use a dynamic view for an ordered runtime interaction, not static ownership.
  • Use a deployment view for runtime placement in environments and nodes.

Prefer a small view with one clear question over one diagram that exposes every known element and relationship.

Every view must communicate architecture or behavior through meaningful relationships, boundaries, dependencies, lifecycle, or runtime flow. Do not create a view whose sole purpose is listing elements. When readers need an element inventory, use documentation or a generated catalog; keep diagrams focused on how the elements work together.

Use separate views when readers need different flows or levels of detail. Each view must still answer its own architectural question.

Split a view when it combines independent ownership or runtime questions and its canonical relationship labels cannot be routed without collisions. Move each complete question into a purposefully titled view; do not shorten, disconnect, or hide the relationships merely to retain one output.

Make the main view a system summary

When a published diagram set has multiple views, designate one stable main or overview view:

  • The main view must summarize the entire system: its entry points, major capabilities, owning services, shared runtime or data services, and key external dependencies or execution paths.
  • Prefer showing every owned service when their relationships remain readable and meaningful.
  • If all services make the overview unreadable, show representative owners from every major subsystem and the relationships that connect those subsystems. Put omitted service-level detail in focused secondary views.
  • Do not let the main view describe only one feature, runtime path, subsystem, or user journey. A reader who sees only the main view should still understand the system's complete architectural shape and how its major parts work together.
  • Preserve the main view's published key and filename. Refine its scope rather than replacing it with a narrowly focused view.
Show full SKILL.md (1,187 more words)Show less

Author the DSL

  • Give every view a concrete purpose in its description.
  • Use variables or stable element paths for references; do not select elements by incidental rendered text.
  • Preserve stable view keys and output filenames used by documentation or publishing. When intentionally removing a key, update references and remove its stale generated output because regeneration does not prove stale files disappeared.
  • Use AddDefault, Add, and Remove deliberately. Avoid AddAll when it obscures the view's question.
  • SelectRelationships is available only in a SystemLandscapeView. In other view types, curate membership and use Unlink for relationships that do not answer the view's question.
  • Unlink hides a real source-model relationship from one view; it does not mean the relationship is absent. Never unlink solely to improve layout.
  • Before every Unlink, ask whether a reader seeing both endpoints without the edge could reasonably infer that no relationship exists. If so, keep and arrange the edge, remove an out-of-scope endpoint, or split the view.
  • A narrowly titled dynamic flow may omit relationships that are outside that exact runtime interaction. Make the scope explicit in the title and description, and ensure another purposeful view or authoritative documentation communicates any omitted relationship that matters to system understanding.
  • Main and overview views must retain the key architecturally significant relationships among their visible elements. Do not make an overview look simpler by disconnecting services that materially depend on one another.
  • NoRelationship removes every relationship to and from that element after view finalization, including explicitly linked relationships. Use it only when one element is intentionally isolated within an otherwise meaningful view, not to turn the whole view into a listing or as a general edge filter.
  • In a DynamicView, Link(source, destination, description) selects an existing source-model relationship. The description must exactly match the canonical relationship description; it is not a display-label override.
  • Linked dynamic-view elements may also render other model relationships among those elements. Compare the rendered edge count with the intended links and use Unlink for every incidental relationship.
  • Supply the exact canonical description to Unlink, even when only one relationship exists between the source and destination.
  • Describe relationships with domain actions such as "Publishes alarm state" or "Retrieves schedules", not vague labels such as "Uses".
  • Keep relationship direction consistent with the runtime call, event, or data flow.
  • Coalesce duplicate relationships only when one label truthfully represents them.
  • Do not weaken or shorten canonical element metadata merely to make a crowded diagram fit. Prefer a smaller view or a layout/rendering correction.
  • Use AutoLayout as the default complete placement. It measures rendered content, places nodes, boundaries, routes, and labels together, and rejects invalid geometry instead of saving a partial result.
  • Treat an mdl svg geometry failure as a real model, view-scope, saved-layout, or MDL defect. Do not work around it by unlinking relationships, shortening truthful text, retrying with guessed spacing, or accepting a partly rendered file.
  • Always inspect every rendered view visually. Compilation, successful rendering, and non-overlapping geometry are not evidence that the view communicates well.
  • Use saved coordinates from the MDL visual editor only for intentional refinement. A manual layout must contain every current element, complete relationship routes, and placed labels; stale or partial saved geometry is invalid.

Regenerate and inspect

Render all affected views from the repository root, using the repository's pinned go tool mdl invocation when available:

bash
mdl svg <model-package> -all -dir <output-directory>
# or: go tool mdl svg <model-package> -all -dir <output-directory>

For interactive layout refinement:

bash
mdl serve <model-package> -dir <output-directory>
Arrange with the MDL visual editor

Start with AutoLayout, then visually review every view in the generated set. Keep the automatic result when its hierarchy, spacing, labels, and edge routing communicate the view's question clearly. Use the editor only when deliberate placement would improve that communication. When a rendered view has excessive whitespace, weak visual hierarchy, or avoidable edge crossings:

  1. Confirm the view contains only relationships that answer its architectural question. Do not unlink a real relationship merely because its label or route is difficult to place. If too many in-scope relationships remain, split the question before positioning. Omit an incidental relationship only when the title and description make that scope clear and another purposeful view or authoritative documentation preserves the relevant fact.
  2. Run mdl serve for the model package and output directory. If DSL changes while the editor is running, verify the displayed node and edge counts changed; restart mdl serve when it still shows the previously compiled model.
  3. Select the affected view in the editor.
  4. Arrange nodes, relationship labels, and boundaries so the primary architectural flow is apparent before reading every label.
  5. Keep every boundary truthful while moving elements: only owned descendants may sit inside it, and sibling or external elements must remain outside.
  6. Reset or reposition stale edge bend points and labels after moving nodes or changing membership. Saved routes from an earlier layout must not leave lines outside boundaries, unnecessary detours, or detached labels. If MDL rejects a stale or incomplete saved layout, regenerate that whole affected view or deliberately migrate every element and route together. Never mix old manual positions with newly guessed automatic values.
  7. Save through the MDL editor so it records supported layout coordinates. Do not hand-edit generated SVG or JSON layout data.
  8. Confirm the expected SVG's timestamp or content changed, wait for the write to finish, then reload the view from disk. Verify node coordinates and edge vertices survived before accepting the layout.
  9. Reopen the persisted SVG at fitted viewport scale and verify the saved nodes, labels, arrows, and boundary titles.

For MDL renderer or layout changes, render the full repository view set at least three times and compare the SVG files byte for byte. Also run independent model packages concurrently. Any changed bytes between identical runs, port collision, timeout, partial file, or cross-view result is a tool defect.

Always review the main view in the editor and arrange it deliberately whenever that improves the whole-system summary. Review every secondary view at fitted viewport scale and arrange it as needed. Do not use manual positioning to compensate for excessive scope or an incorrect model; split or correct the view first.

After rendering, verify:

  • Every expected element appears once.
  • Across the published view set, every architecturally relevant owned service appears in at least one purposeful view or has an explicit documented reason to remain model-only.
  • The main view represents every major subsystem and capability, even when detailed services are delegated to secondary views.
  • Rendered node, edge, and boundary counts match the view's stated scope.
  • Every Unlink has been reviewed against the source relationship, the view's stated scope, and the inference a reader may draw from its omission.
  • The C4 abstraction level is consistent.
  • All boundaries satisfy the ownership and non-overlap rules.
  • External elements are outside internal boundaries.
  • Relationship direction and labels are readable.
  • Nodes, labels, arrows, and boundary titles do not overlap.
  • Text stays inside its node or boundary.
  • The complete structure is visible at common viewport sizes. Labels in an honestly dense overview may require zoom, but focused secondary views must make its major flows readable without hiding real relationships.
  • Generated files match the DSL and are included when the repository publishes rendered artifacts.

Run the repository's architecture-drift checks, tests, and formatting commands after changing Go DSL.

© goadesign, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in cmd/mdl/skills/editing-model-diagrams of goadesign/model.

Open the folder on GitHubat commit fcc7921

Compare with similar skills

Editing Model Diagrams next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Editing Model Diagrams compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Editing Model Diagrams this skillgoadesign/model467—~4.2kAutomated safety check: PassMIT
Archify Diagramstt-a1i/archify81k—~2.9kAutomated safety check: PassMIT
JSON Canvasheyitsnoah/claudesidian2.6k18 repos~3.5kAutomated safety check: PassMIT
Diagram Designcathrynlavery/diagram-design47k1 repos~7.5kAutomated safety check: PassMIT
Fireworks Tech Graphtisfeng/Easydict15k1 repos~1.4kAutomated safety check: PassMIT
Excalidraw Diagramcoleam00/excalidraw-diagram-skill5k2 repos~6.1kAutomated safety check: PassNone

Similar skills

  • Archify Diagrams

    tt-a1i/archify

    Creates interactive architecture, workflow, sequence, data-flow and lifecycle diagrams as standalone HTML with inline SVG, themes and image or video export.

    81k GitHub stars~2.9k tokensUpdated today
    DevelopmentAuto-check passed
  • JSON Canvas

    heyitsnoah/claudesidian

    Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections.

    2.6k GitHub starsUsed in 18 repos~3.5k tokens
    DevelopmentAuto-check passed
  • Diagram Design

    cathrynlavery/diagram-design

    Creates branded diagrams, from architecture, flowchart and sequence to charts and maps, as self-contained HTML with inline SVG, with import from draw.io, Mermaid and Excalidraw.

    47k GitHub starsUsed in 1 repo~7.5k tokens
    DevelopmentAuto-check passed
  • Fireworks Tech Graph

    tisfeng/Easydict

    Create precise SVG technical diagrams, export PNG or offline HTML, and animate supported semantic SVGs to GIF.

    15k GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check passed
  • Excalidraw Diagram

    coleam00/excalidraw-diagram-skill

    Create Excalidraw diagram JSON files that make visual arguments.

    5k GitHub starsUsed in 2 repos~6.1k tokens
    DevelopmentAuto-check passed
  • Draw.io Diagram Studio

    Agents365-ai/drawio-skill

    Creates and edits editable draw.io diagrams from descriptions, code, infrastructure files, SQL and API schemas, with sync, review, test and export tools.

    10k GitHub stars~2.4k tokensUpdated 7 days ago
    DevelopmentAuto-check: notes

Categories

Questions about Editing Model Diagrams

What does Editing Model Diagrams do?

Creates, edits, reviews, and regenerates C4 architecture diagrams written with goa.design/model and the mdl CLI. Editing Model Diagrams is an agent skill from goadesign/model.design/model and the mdl CLI.

When should I use Editing Model Diagrams?

Editing Model Diagrams fits situations like: changing Model DSL; system landscape; deployment views; element relationships.

How do I install Editing Model Diagrams in Claude Code?

Run `npx skills add goadesign/model --skill editing-model-diagrams -a claude-code`. Or copy the skill folder (cmd/mdl/skills/editing-model-diagrams in goadesign/model) into .claude/skills/editing-model-diagrams in your project. Claude Code loads it when a task matches its description.

How do I install Editing Model Diagrams in Codex?

Run `npx skills add goadesign/model --skill editing-model-diagrams -a codex`. Or copy the skill folder (cmd/mdl/skills/editing-model-diagrams in goadesign/model) into .agents/skills/editing-model-diagrams in your project. Codex loads it when a task matches its description.

Can I use Editing Model Diagrams in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add goadesign/model --skill editing-model-diagrams -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/editing-model-diagrams, .gemini/skills/editing-model-diagrams, .github/skills/editing-model-diagrams and .opencode/skills/editing-model-diagrams in your project.

What does Editing Model Diagrams need to run?

Going by SKILL.md and its folder, Editing Model Diagrams needs the command-line tools its instructions call (go).

Does Editing Model Diagrams access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Editing Model Diagrams safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Editing Model Diagrams use?

Editing Model Diagrams is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Editing Model Diagrams use?

About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Editing Model Diagrams?

Skills that share tags, products or a category with Editing Model Diagrams: Archify Diagrams (tt-a1i/archify, 81k stars), JSON Canvas (heyitsnoah/claudesidian, 2.6k stars), Diagram Design (cathrynlavery/diagram-design, 47k stars) and Fireworks Tech Graph (tisfeng/Easydict, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Editing Model Diagrams?

goadesign (a GitHub organization) maintains it in goadesign/model, which has 467 GitHub stars. The repository was last updated on October 5, 2026.

Source: goadesign/model on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.