Jgs v1 diagrams
Skill jgsystemsconsulting/jgs-magic-sysmlv1-read-skills/skills/jgs-v1-diagrams
Read-only SysML v1 model analysis skills for CATIA Magic: navigate, inspect, audit, report. Free to use, works with Claude Code and other agents.
npx -y skills add jgsystemsconsulting/jgs-magic-sysmlv1-read-skills --skill jgs-v1-diagramsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Inventory and export SysML v1 diagrams — build a visual review pack of diagram images, list diagram kinds, and compare layout styles. FREE tier (read-only). Requires jgs-magic-sysmlv1-mcp. Trigger: "export diagrams", "diagram images", "PNG", "review pack", "visual review", "diagram inventory", "layout styles", "compare layouts".
SKILL.md
6.8 KB, as published. Nobody here has run it
jgs-v1-diagrams — Diagram Inventory & Visual Export
You are a context-free AI agent executing the jgs-v1-diagrams skill. Read-only — never call
enable_writes or any mutation tool. Any image files are saved with the agent's own Write tool.
Invocation: /jgs-v1-diagrams [<package-name-or-id>]
Behavior-content caveat (bridge gap, 2026-06-17):
list_children/get_element_structure/walk_treedo NOT enumerateActivity.node/edgeorStateMachineregion/state/transition collections — a populated activity/state-machine reportschildCount:1. Never judge an Activity or StateMachine "empty" from those tools. Judge behavior from the exported PNG,get_model_metricstype counts (OpaqueActionImpl/ControlFlowImpl/TransitionImpl/StateImpl), orexecute_groovygetNode()/getRegion().getTransition().
Tool constraints — read before calling anything
list_diagramsrequiresparent_id— there is no model-wide form. Call it once per package node.walk_treetakesroot_id/max_depth/max_elements; passmax_elements: 2000and warn if the result count equals 2000 (possible truncation).export_diagram_imagetakes adiagram_idand returns an inline base64 JPEG (max 1024px) as MCP ImageContent — it does NOT return a PNG and does NOT write a file. To persist it, decode the base64 and write a.jpgwith the agent's Write tool.list_diagram_symbols,list_layout_styles,compare_layout_stylesall take adiagram_id.list_diagram_kindstakes no arguments (reference list of supported kinds).
Step 1 — Resolve scope
- No argument: call
mcp__jgs-sysmlv1__get_root_package→root_id. - Argument given: resolve via
find_by_name/find_by_qualified_name(handle 0 / 1 / many / 50-cap as injgs-v1-navigate) →root_id.
Step 2 — Collect package nodes
Call mcp__jgs-sysmlv1__walk_tree({"root_id": "<root_id>", "max_depth": 10, "max_elements": 2000}).
Collect every package node ID. (Truncation warning if count == 2000.)
Step 3 — Inventory diagrams
For each package node, call mcp__jgs-sysmlv1__list_diagrams({"parent_id": "<package_id>"}).
Collect diagram id, name, kind, owning package. For symbol counts, call
mcp__jgs-sysmlv1__list_diagram_symbols({"diagram_id": "<diagram_id>"}) per diagram. Caveat:
list_diagram_symbols is a partial ("Phase B") capability and may return 0 symbols for a diagram that
actually has content (confirmed live). So do NOT definitively label a diagram a stub on a low/zero
count — render the symbol count as n/a when 0 and treat "stub" as a soft hint only.
Optionally call mcp__jgs-sysmlv1__list_diagram_kinds once to annotate/validate the kinds seen.
Step 4 — Export images (visual review pack)
Ask the user: "Export images for all N diagrams, or a subset? (all / list names)". For each selected
diagram, call mcp__jgs-sysmlv1__export_diagram_image({"diagram_id": "<diagram_id>"}). Decode the
returned base64 JPEG and write it as jgs-v1-diagrams/<sanitised-diagram-name>.jpg with the agent's
Write tool. If an export fails, note it and continue.
Step 4b — Visual self-check (vision; bounded)
Exporting proves the diagram rendered — not that it is readable. After Step 4, if you can
read images, score each exported JPEG against the shared defect taxonomy and report a
verdict. Full taxonomy + round discipline:
_magic-sysmlv2-self-verify/reference/visual-self-check.md (v1 flavour).
Quick taxonomy: symbol overlap · edge spaghetti · label truncation · cramped density · wrong orientation/aspect · disconnected/gridded boxes (no drawn paths) · blank/near-blank (→ AMBIGUOUS, not a defect) · low contrast.
- Read-only skill: you may NOT re-layout (no
auto_layout_diagram— that's a write). So here the self-check is diagnostic only: report defects per diagram in the output pack ("⚠️ overlap", "⚠️ labels clipped", or "clean"); recommend the user re-run layout in a PRO/write context. Max 1 scoring pass (no fix loop — you can't fix read-only). - Blank/stub image → AMBIGUOUS ("diagram may not be open / export failed"), never a clean verdict and never an "empty diagram" claim.
- No vision → skip; show the images and state the visual layer was not auto-checked.
Add a Visual column to the output table (clean / ⚠️ <defects> / n/a).
Step 5 — (optional) Layout comparison
If the user asks about layout, call mcp__jgs-sysmlv1__list_layout_styles({"diagram_id": "<id>"}) and
mcp__jgs-sysmlv1__compare_layout_styles({"diagram_id": "<id>"}) for a chosen diagram and summarise.
Output Format
## Diagram Review Pack — <model or package name>
**Diagrams:** <total> (<count> by kind…)
**Exported:** <n> images → ./jgs-v1-diagrams/
**Stub diagrams (<3 symbols):** <list or "none">
| Diagram | Kind | Package | Symbols | Image | Visual |
|---|---|---|---|---|---|
| <name> | <kind> | <pkg> | <n> | <file.jpg or — not exported —> | clean / ⚠️ <defects> / n/a |
Error handling
- Bridge not reachable: "jgs-magic-sysmlv1-mcp bridge is not reachable. Is CATIA Magic running with the bridge plugin active?" Stop.
list_diagramsfails for a package: note inline and continue with other packages.export_diagram_imagefails for a diagram: mark it "— export failed —" and continue.
What not to do
- Do not call
list_diagramswithoutparent_id. - Do not describe the export output as PNG — it is JPEG (≤1024px).
- Do not call any model write tool.
Common Mistakes
| Mistake | Fix |
|---|---|
list_diagram_symbols returns 0 → diagram called a "stub" | 0 is a known partial-capability result, NOT proof of emptiness — render the count n/a, treat "stub" as a soft hint only |
Activity / StateMachine reported "empty" (childCount:1) | list_children/get_element_structure/walk_tree do NOT enumerate Activity nodes/edges or SM regions/transitions — judge from the exported image, get_model_metrics type counts, or execute_groovy getNode()/getRegion().getTransition() |
Treating export_diagram_image output as a saved file | It returns an inline base64 JPEG (≤1024px) — decode and Write it yourself to persist |
list_diagrams called model-wide | It requires parent_id — call once per package node |
| Calling a blank export an "empty diagram" | Confirm it's OPEN; a closed/failed export is AMBIGUOUS, not an empty diagram |