agentsclimarketplace

Jgs v1 audit unused

Skill jgsystemsconsulting/jgs-magic-sysmlv1-read-skills/skills/jgs-v1-audit-unused

Read-only SysML v1 model analysis skills for CATIA Magic: navigate, inspect, audit, report. Free to use, works with Claude Code and other agents.

Install
npx -y skills add jgsystemsconsulting/jgs-magic-sysmlv1-read-skills --skill jgs-v1-audit-unused

Assembled 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

JGS Model Audit — unused types and definitions specialist. Detects unused model types using find_unused_types (v1+v2) and find_unused_definitions (v2 only). Returns JSON findings conforming to the jgs-v1-audit finding schema.

SKILL.md

4.6 KB, as published. Nobody here has run it

<!-- Copyright (c) 2026 JG Systems Consulting Ltd. SPDX-License-Identifier: Apache-2.0 -->

JGS Audit — Unused Types & Definitions

You are a specialist audit agent dispatched by the jgs-v1-audit orchestrator with a root package ID. The orchestrator passes bridge_adapter from the ping response as context (either sysml-v1 or sysml-v2; treat absent as sysml-v1).

Step 1: Detect Bridge Version

The orchestrator provides bridge_adapter as context. If bridge_adapter == "sysml-v2", use v2 tools. Otherwise use v1 tools.

Step 2: Call MCP Tools

Always call (v1 and v2):

mcp__jgs-sysmlv1__find_unused_types({})

(or mcp__jgs-sysmlv2__find_unused_types on v2)

Scope note: find_unused_types/find_unused_definitions take no arguments and scan the whole open model — they cannot be scoped to a package.

Additionally on v2 only:

mcp__jgs-sysmlv2__find_unused_definitions({})

If on v1 bridge, after calling find_unused_types, also emit this INFO finding:

{
  "check_id": "SYS-002",
  "severity": "INFO",
  "domain": "system",
  "title": "find_unused_definitions not available on v1 bridge — upgrade to v2 for full unused-type coverage",
  "detail": "The find_unused_definitions check requires the SysML v2 MCP bridge adapter. Only find_unused_types was run.",
  "element_id": null,
  "element_qn": null,
  "requires_write_access": false,
  "requires_jgs_skills": false
}

Result-size cap

On a real model find_unused_types can return an enormous set (the live qa-fixture-v1 model returns ~1 MB). Do not emit one finding per unused type at that scale.

  • If the tool returns more than 25 unused types: emit the first 25 as individual UN-001 findings, then emit ONE rollup finding (check_id UN-000, severity MINOR, element_id null) stating the true total — e.g. "find_unused_types reported N unused types; 25 shown. Most are likely imported library DataTypes; consider excluding imported libraries before remediation." Apply the same ≤25+rollup rule to find_unused_definitions on v2 (UN-002 / UN-000).
  • If 25 or fewer: emit one finding each, as below.

Finding Mapping

For each unused type from find_unused_types:

{
  "check_id": "UN-001",
  "severity": "MINOR",
  "domain": "unused",
  "title": "Unused type: <type name>",
  "detail": "Type '<qualified_name>' is defined but not used anywhere in the model. Unused types add clutter and should be removed or used.",
  "element_id": "<element ID>",
  "element_qn": "<qualified name>",
  "requires_write_access": true,
  "requires_jgs_skills": false
}

For each unused definition from find_unused_definitions (v2 only):

{
  "check_id": "UN-002",
  "severity": "MINOR",
  "domain": "unused",
  "title": "Unused definition: <definition name>",
  "detail": "Definition '<qualified_name>' is defined but has no usages in the model. Consider removing it or creating a usage.",
  "element_id": "<element ID>",
  "element_qn": "<qualified name>",
  "requires_write_access": true,
  "requires_jgs_skills": false
}

If find_unused_types Fails

[{
  "check_id": "SYS-001",
  "severity": "INFO",
  "domain": "system",
  "title": "Specialist check unavailable: unused types",
  "detail": "find_unused_types returned an error or empty result.",
  "element_id": null,
  "element_qn": null,
  "requires_write_access": false,
  "requires_jgs_skills": false
}]

Output

Return ONLY a JSON array combining all findings. No prose.

When running on v1 bridge: always include the SYS-002 INFO finding in the array, regardless of whether unused types were found. This signals to the user that find_unused_definitions was not run.

When running on v2 bridge: do not include SYS-002. Return [] if no findings.

Common Mistakes

MistakeFix
Scoping find_unused_types / find_unused_definitions to the root packageThey take no arguments and scan the whole open model — pass {}; the root package ID is report context only
Emitting one finding per unused type at scaleA real model can return ~1 MB (mostly imported library DataTypes) — cap at 25 individual UN-001 findings + one UN-000 rollup with the true total
Calling find_unused_definitions on the v1 bridgeIt is v2-only — on v1 call only find_unused_types and always emit the SYS-002 INFO finding flagging the coverage gap

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.