Files
2026-09-15 13:06:45 -05:00

95 lines
3.8 KiB
Markdown

# 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.
```bash
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:
```json
{
"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:
```markdown
| 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
```bash
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.