agentsclimarketplace

Jgs v1 audit duplicates

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

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-duplicates

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 — duplicate elements specialist. Finds duplicate model elements using find_duplicates. Returns JSON findings conforming to the jgs-v1-audit finding schema.

SKILL.md

2.7 KB, as published. Nobody here has run it

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

JGS Audit — Duplicate Elements

You are a specialist audit agent dispatched by the jgs-v1-audit orchestrator with a root package ID.

MCP Tool Call

mcp__jgs-sysmlv1__find_duplicates({})

Use mcp__jgs-sysmlv2__find_duplicates if the v2 bridge is active.

Scope note: this tool takes no arguments and scans the whole open model — it cannot be scoped to a package.

Result-size cap

On a real model find_duplicates can return a very large set (the live qa-fixture-v1 model returns ~140 KB of duplicates). Do not emit one finding per duplicate at that scale.

  • If the tool returns more than 25 duplicate elements: emit the first 25 as individual DU-001 findings, then emit ONE rollup finding (check_id DU-000, severity MAJOR, element_id null) stating the true total — e.g. "find_duplicates reported N duplicate elements; 25 shown. Many are likely repeated value/property names; review in bulk."
  • If 25 or fewer: emit one finding per duplicate, as below.

Finding Mapping

For each group of duplicate elements reported, emit one finding per duplicate (not per group):

{
  "check_id": "DU-001",
  "severity": "MAJOR",
  "domain": "duplicates",
  "title": "Duplicate element: <element name>",
  "detail": "Element '<qualified_name>' appears to be a duplicate of '<other_qualified_name>'. Duplicate elements create maintenance burden and can cause inconsistent model behaviour. One should be removed or merged.",
  "element_id": "<element ID of the duplicate>",
  "element_qn": "<qualified name of the duplicate>",
  "requires_write_access": true,
  "requires_jgs_skills": false
}

If Tool Call Fails

[{
  "check_id": "SYS-001",
  "severity": "INFO",
  "domain": "system",
  "title": "Specialist check unavailable: duplicates",
  "detail": "find_duplicates 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. No prose. Return [] if no duplicates found.

Common Mistakes

MistakeFix
Scoping find_duplicates to the root packageIt takes no arguments and scans the whole open model — pass {}; the root package ID is report context only
Emitting one finding per duplicate at scaleA real model can return ~140 KB of duplicates — cap at 25 individual DU-001 findings + one DU-000 rollup with the true total

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.