Files
BAT/exchangeResources/claude-skills/INSTALL.md
2026-09-15 13:06:45 -05:00

3.8 KiB

Installing these skills into the ignition plugin

Three Claude Code skills that package the Exchange tooling in this folder so other people get it automatically, without knowing it exists.

They are staged here rather than written directly into AI-Tools because that repo was read-only for this work. Nothing below has been applied there yet.

Where they go

Into the existing ignition plugin, not a new one. That follows the marketplace's own rule:

Plugins are split by domain, not by repo it came from. […] A fourth plugin with one skill in it is worse than putting that skill somewhere slightly imperfect: it's another thing to install and another manifest to maintain.

Exchange publishing is Ignition-domain work, and ignition already exists.

cp -r ignition-exchange-conformance \
      ignition-exchange-convert \
      ignition-exchange-publish \
      ~/git/AI-Tools/plugins/ignition/skills/

Resulting layout:

plugins/ignition/skills/
  ignition-gateway/
  ignition-trial-reset/
  ignition-exchange-conformance/   SKILL.md  exchange_lint.py  test_exchange_lint.py
  ignition-exchange-convert/       SKILL.md  verify_refs.py    parity.py
  ignition-exchange-publish/       SKILL.md

Then: bump the plugin version

plugins/ignition/.claude-plugin/plugin.json0.1.00.2.0, and widen the description, which currently only mentions the gateway API and trial reset:

{
  "name": "ignition",
  "description": "Ignition 8.3 gateway skills. HTTP API authentication and endpoint discovery, trial-expiry detection and reset on unlicensed gateways, and Ignition Exchange publishing — conformance checking, converting a project into Exchange shape, and packaging for upload.",
  "author": { "name": "Brendan Peck", "email": "b.peck@prime-controls.com" },
  "version": "0.2.0"
}

.claude-plugin/marketplace.json carries a second copy of that description — update it to match, or the marketplace listing will understate the plugin.

Then: the README rows

Under ### ignition, the skill table becomes:

| Skill | Loads when you're... |
| --- | --- |
| `ignition-gateway` | calling an Ignition 8.3 gateway's HTTP API (`/data/api/v1/...`) |
| `ignition-trial-reset` | debugging bad-quality tags, or resetting a trial gateway |
| `ignition-exchange-conformance` | checking whether a project is ready for the Ignition Exchange |
| `ignition-exchange-convert` | turning an existing project into a publishable Exchange resource |
| `ignition-exchange-publish` | packaging and uploading a resource to the Exchange |

Suggested paragraph to follow it:

The three ignition-exchange-* skills cover the publishing pipeline end to end. -conformance runs a 38-rule checker against the Exchange Resources Style Guide and, just as usefully, says what it cannot check. -convert carries the migration order and two scripts that catch what a conformance checker cannot see: dangling references after a mass rename, and features silently dropped. -publish is the upload form, field by field.

Verify after copying

cd ~/git/AI-Tools
python3 plugins/ignition/skills/ignition-exchange-conformance/test_exchange_lint.py
python3 -c "import json;[json.load(open(p)) for p in ['.claude-plugin/marketplace.json','plugins/ignition/.claude-plugin/plugin.json']];print('manifests parse')"
/plugin marketplace add ~/git/AI-Tools    # local path works while developing

Keeping the copies in sync

exchange_lint.py and test_exchange_lint.py now exist twice: in exchangeResources/ (the working copy, used by this repo) and inside the skill (the distributable). verify_refs.py and parity.py live only in the skill.

If you change a rule, update both — or make exchangeResources/ a symlink to the skill copy and keep one source of truth.