Jgs v1 inspect
Skill jgsystemsconsulting/jgs-magic-sysmlv1-read-skills/skills/jgs-v1-inspect
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-inspectAssembled 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
Deep-dive a single SysML v1 element — type, structure, ports, relationships, allocations, stereotypes, tagged values, and requirement links in one dossier. FREE tier (read-only). Requires jgs-magic-sysmlv1-mcp. Trigger: "inspect", "tell me everything about", "describe this element/block/part", "what is X", "show details of".
SKILL.md
6.3 KB, as published. Nobody here has run it
jgs-v1-inspect — Single-Element Deep Dive
You are a context-free AI agent executing the jgs-v1-inspect skill. Follow these steps exactly. This
skill is read-only — never call enable_writes, begin_batch, or any create/update/delete tool.
Distinct from jgs-v1-impact (which assesses change blast-radius). This skill produces a complete
reference dossier for one element.
Invocation: /jgs-v1-inspect <element-name-or-qualified-name-or-id>
Tool constraints — read before calling anything
find_by_nameis capped at 50 results (model-wide). If the count equals 50, warn and advise the qualified name.- All the detail calls below are single-element and take
element_idonly (no scope arg):get_element,describe_element,get_element_structure,get_qualified_name,list_children(takesparent_id),get_ports,get_relationships,get_allocations,list_applied_stereotypes. trace_requirementtakesrequirement_idand only returns data for elements that are Requirements.
Behavior-content caveat (bridge gap, 2026-06-17):
list_children/get_element_structure/walk_treedo not enumerateActivity.node/edgeorStateMachineregion/state/transition — a populated activity/state-machine reportschildCount:1. When inspecting an Activity or StateMachine, do not report it "empty" from those tools; note behavior is detailed viaget_model_metricstype counts orexecute_groovy getNode()/getRegion().getTransition().
Step 1 — Resolve the element
- If the argument looks like a qualified name (contains
::), callmcp__jgs-sysmlv1__find_by_qualified_name({"qualified_name": "<value>"})(exact, no cap). - Else if it looks like a raw element ID, use it directly as
element_idand skip to Step 2. - Otherwise call
mcp__jgs-sysmlv1__find_by_name({"name": "<value>"}).
Handle results:
- Zero: "No element named '<value>' found. Try
/jgs-v1-navigateto browse, or pass the qualified name (e.g.Pkg::Block)." Stop. - One: use its ID as
element_id. - Multiple (2–49): list as
[N] Type — QualifiedName (ID: ...)and ask which one. Wait. - Exactly 50: list them and warn the result may be truncated; advise the qualified name. Wait.
Step 2 — Core identity
Call mcp__jgs-sysmlv1__get_element({"element_id": "<element_id>"}) and
mcp__jgs-sysmlv1__get_qualified_name({"element_id": "<element_id>"}).
Capture: type, name, qualified name, owner.
Step 3 — Rich description
Call mcp__jgs-sysmlv1__describe_element({"element_id": "<element_id>"}) for documentation, stereotypes
and tagged values, and mcp__jgs-sysmlv1__list_applied_stereotypes({"element_id": "<element_id>"}) for
the applied-stereotype list.
Step 4 — Structure
Call mcp__jgs-sysmlv1__get_element_structure({"element_id": "<element_id>"}) (parts, properties,
nested structure) and mcp__jgs-sysmlv1__list_children({"parent_id": "<element_id>"}) for direct owned
children.
Step 5 — Interfaces
Call mcp__jgs-sysmlv1__get_ports({"element_id": "<element_id>"}) for ports and their typing.
Step 6 — Connections
Call mcp__jgs-sysmlv1__get_relationships({"element_id": "<element_id>"}) and
mcp__jgs-sysmlv1__get_allocations({"element_id": "<element_id>"}).
Step 7 — Requirement links (only if the element is a Requirement)
If Step 2 reported the type as a Requirement, call
mcp__jgs-sysmlv1__trace_requirement({"requirement_id": "<element_id>"}) for its satisfy/verify/derive
chain. Skip otherwise.
Output Format
## Element Dossier — <Name>
**Type:** <type> **Qualified name:** <qn> **ID:** <id> **Owner:** <owner>
### Documentation
<doc text, or "— none —">
### Applied stereotypes & tagged values
<list, or "— none —">
### Structure
- Children: <N> (<names…>)
- Parts/properties: <summary from get_element_structure>
### Ports
<list with typing, or "— none —">
### Relationships
<grouped by kind: Association, Generalization, Dependency, ItemFlow, Satisfy, Verify, Allocate…>
### Allocations
<from/to, or "— none —">
### Requirement traceability (only for Requirement elements)
<satisfy / verify / derive chain>
Omit any section whose call returned nothing rather than printing empty headers (except keep Documentation and Ports as explicit "— none —" since their absence is itself meaningful).
Error handling
- Bridge not reachable: "jgs-magic-sysmlv1-mcp bridge is not reachable. Is CATIA Magic running with the bridge plugin active?" Stop.
- A detail call fails: note it inline under its section (e.g. "Ports: bridge returned no data") and continue with the rest.
What not to do
- Do not call any write tool or
enable_writes. - Do not pass a scope/package argument to the single-element calls — they take
element_idonly. - Do not call
trace_requirementon non-Requirement elements — it returns nothing useful.
Common Mistakes
| Mistake | Fix |
|---|---|
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 get_model_metrics type counts or execute_groovy getNode()/getRegion().getTransition() |
find_by_name result of exactly 50 treated as complete | It is capped at 50 (model-wide) — at 50, warn of possible truncation and advise the qualified name via find_by_qualified_name |
| Passing a package/scope arg to the detail calls | get_element/describe_element/get_element_structure/get_ports/get_relationships/get_allocations/list_applied_stereotypes take element_id only (list_children takes parent_id) — no scope arg |
trace_requirement called on a non-Requirement | It takes requirement_id and returns nothing useful for other element types — only call when Step 2 typed the element as a Requirement |