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.json — 0.1.0 → 0.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.-conformanceruns a 38-rule checker against the Exchange Resources Style Guide and, just as usefully, says what it cannot check.-convertcarries the migration order and two scripts that catch what a conformance checker cannot see: dangling references after a mass rename, and features silently dropped.-publishis 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.