From 1a7f130c5e865fcded52b8591418f35eab8592ba Mon Sep 17 00:00:00 2001 From: harrymunro Date: Fri, 13 Feb 2026 11:58:08 -0400 Subject: [PATCH] Convert Nelson from skill to Claude Code plugin Move skill files from .claude/skills/nelson/ to the plugin root layout (skills/nelson/, agents/) with a .claude-plugin/ manifest and marketplace definition. Add dev symlink for local testing. Update docs and CI paths. --- .claude-plugin/marketplace.json | 21 +++++++++ .claude-plugin/plugin.json | 11 +++++ .gitignore | 1 + CLAUDE.md | 45 ++++++++++++------- README.md | 32 ++++++++++--- .../nelson/agents => agents}/openai.yaml | 0 scripts/check-references.sh | 2 +- {.claude/skills => skills}/nelson/SKILL.md | 0 .../nelson/references/action-stations.md | 0 .../nelson/references/admiralty-templates.md | 0 .../admiralty-templates/battle-plan.md | 0 .../admiralty-templates/captains-log.md | 0 .../admiralty-templates/crew-briefing.md | 0 .../admiralty-templates/quarterdeck-report.md | 0 .../admiralty-templates/red-cell-review.md | 0 .../admiralty-templates/sailing-orders.md | 0 .../admiralty-templates/ship-manifest.md | 0 .../nelson/references/commendations.md | 0 .../nelson/references/crew-roles.md | 0 .../nelson/references/damage-control.md | 0 .../references/damage-control/crew-overrun.md | 0 .../references/damage-control/escalation.md | 0 .../damage-control/man-overboard.md | 0 .../damage-control/partial-rollback.md | 0 .../damage-control/scuttle-and-reform.md | 0 .../damage-control/session-resumption.md | 0 .../nelson/references/squadron-composition.md | 0 .../nelson/references/standing-orders.md | 0 .../standing-orders/admiral-at-the-helm.md | 0 .../standing-orders/all-hands-on-deck.md | 0 .../standing-orders/becalmed-fleet.md | 0 .../standing-orders/captain-at-the-capstan.md | 0 .../standing-orders/crew-without-canvas.md | 0 .../standing-orders/drifting-anchorage.md | 0 .../standing-orders/press-ganged-navigator.md | 0 .../standing-orders/pressed-crew.md | 0 .../standing-orders/skeleton-crew.md | 0 .../references/standing-orders/split-keel.md | 0 .../unclassified-engagement.md | 0 39 files changed, 87 insertions(+), 25 deletions(-) create mode 100644 .claude-plugin/marketplace.json create mode 100644 .claude-plugin/plugin.json rename {.claude/skills/nelson/agents => agents}/openai.yaml (100%) rename {.claude/skills => skills}/nelson/SKILL.md (100%) rename {.claude/skills => skills}/nelson/references/action-stations.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates/battle-plan.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates/captains-log.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates/crew-briefing.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates/quarterdeck-report.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates/red-cell-review.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates/sailing-orders.md (100%) rename {.claude/skills => skills}/nelson/references/admiralty-templates/ship-manifest.md (100%) rename {.claude/skills => skills}/nelson/references/commendations.md (100%) rename {.claude/skills => skills}/nelson/references/crew-roles.md (100%) rename {.claude/skills => skills}/nelson/references/damage-control.md (100%) rename {.claude/skills => skills}/nelson/references/damage-control/crew-overrun.md (100%) rename {.claude/skills => skills}/nelson/references/damage-control/escalation.md (100%) rename {.claude/skills => skills}/nelson/references/damage-control/man-overboard.md (100%) rename {.claude/skills => skills}/nelson/references/damage-control/partial-rollback.md (100%) rename {.claude/skills => skills}/nelson/references/damage-control/scuttle-and-reform.md (100%) rename {.claude/skills => skills}/nelson/references/damage-control/session-resumption.md (100%) rename {.claude/skills => skills}/nelson/references/squadron-composition.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/admiral-at-the-helm.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/all-hands-on-deck.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/becalmed-fleet.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/captain-at-the-capstan.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/crew-without-canvas.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/drifting-anchorage.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/press-ganged-navigator.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/pressed-crew.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/skeleton-crew.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/split-keel.md (100%) rename {.claude/skills => skills}/nelson/references/standing-orders/unclassified-engagement.md (100%) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 0000000..ea9a16c --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", + "name": "nelson-marketplace", + "description": "Royal Navy agent coordination framework for Claude Code", + "owner": { + "name": "Harry Munro" + }, + "plugins": [ + { + "name": "nelson", + "description": "Royal Navy agent coordination framework — sailing orders, battle plans, action stations, and a captain's log", + "version": "1.0.0", + "author": { "name": "Harry Munro" }, + "source": "./", + "repository": "https://github.com/harrymunro/nelson", + "license": "MIT", + "keywords": ["agents", "coordination", "teams", "workflow"], + "category": "workflow" + } + ] +} diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..b1cbf5f --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "nelson", + "description": "Royal Navy agent coordination framework — sailing orders, battle plans, action stations, and a captain's log", + "version": "1.0.0", + "author": { "name": "Harry Munro" }, + "repository": "https://github.com/harrymunro/nelson", + "license": "MIT", + "keywords": ["agents", "coordination", "teams", "workflow"], + "skills": "./skills/", + "agents": "./agents/" +} diff --git a/.gitignore b/.gitignore index 3948716..affaaff 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ __pycache__/ *.pyc .DS_Store +.claude/skills/nelson diff --git a/CLAUDE.md b/CLAUDE.md index ac0f565..4069d14 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,20 +5,23 @@ Nelson is a Claude Code skill for coordinating agent work using Royal Navy termi ## Project structure ``` -.claude/skills/nelson/ - SKILL.md — Main entrypoint (what Claude reads) - references/ — Supporting docs loaded on demand - action-stations.md — Risk tier definitions (Station 0–3) - admiralty-templates.md — Index routing to individual template files - admiralty-templates/ — One file per template, loaded on demand - crew-roles.md — Crew role definitions, ship names & sizing rules - damage-control.md — Index routing to individual procedure files - damage-control/ — One file per procedure, loaded on demand +.claude-plugin/ + plugin.json — Plugin manifest + marketplace.json — Marketplace definition (self-hosted) +skills/nelson/ + SKILL.md — Main entrypoint (what Claude reads) + references/ — Supporting docs loaded on demand + action-stations.md — Risk tier definitions (Station 0–3) + admiralty-templates.md — Index routing to individual template files + admiralty-templates/ — One file per template, loaded on demand + crew-roles.md — Crew role definitions, ship names & sizing rules + damage-control.md — Index routing to individual procedure files + damage-control/ — One file per procedure, loaded on demand squadron-composition.md — Mode selection & team sizing rules - standing-orders.md — Index routing to individual anti-pattern files - standing-orders/ — One file per anti-pattern, loaded on demand - agents/ — Agent interface definitions -demos/ — Example applications built with Nelson + standing-orders.md — Index routing to individual anti-pattern files + standing-orders/ — One file per anti-pattern, loaded on demand +agents/ — Agent interface definitions +demos/ — Example applications built with Nelson ``` ## No build system @@ -27,12 +30,20 @@ This is a documentation-driven skill with zero runtime dependencies. There is no ## Testing changes -Install the skill locally and run a mission to verify. Either tell Claude Code "Install skills from https://github.com/harrymunro/nelson" or copy the skill directory manually: +Install the plugin and run a mission to verify: -```bash -mkdir -p /.claude/skills -cp -r .claude/skills/nelson /.claude/skills/nelson ``` +/plugin install harrymunro/nelson +``` + +Or add the marketplace first, then install: + +``` +/plugin marketplace add harrymunro/nelson +/plugin install nelson +``` + +For local development in this repo, the symlink at `.claude/skills/nelson` → `../../skills/nelson` means `/nelson` works automatically. Then invoke `/nelson` in Claude Code. diff --git a/README.md b/README.md index deea229..b934daa 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,20 @@ Nelson gives Claude a six-step operational framework for tackling complex missio ## Installation -### Prompt-based (recommended) +### Plugin install (recommended) + +``` +/plugin install harrymunro/nelson +``` + +Or add the marketplace first, then install by name: + +``` +/plugin marketplace add harrymunro/nelson +/plugin install nelson +``` + +### Prompt-based Open Claude Code and say: @@ -56,11 +69,11 @@ Clone the repo and copy the skill directory yourself: # Project-level (recommended for teams) git clone https://github.com/harrymunro/nelson.git /tmp/nelson mkdir -p .claude/skills -cp -r /tmp/nelson/.claude/skills/nelson .claude/skills/nelson +cp -r /tmp/nelson/skills/nelson .claude/skills/nelson rm -rf /tmp/nelson # Or user-level (personal, all projects) -cp -r /tmp/nelson/.claude/skills/nelson ~/.claude/skills/nelson +cp -r /tmp/nelson/skills/nelson ~/.claude/skills/nelson ``` Then commit `.claude/skills/nelson/` to version control so your team can use it. @@ -218,13 +231,14 @@ The skill includes structured templates for consistent output across missions: image -## Skill file structure +## Plugin file structure ``` -.claude/skills/nelson/ +.claude-plugin/ +├── plugin.json # Plugin manifest +└── marketplace.json # Marketplace definition (self-hosted) +skills/nelson/ ├── SKILL.md # Main skill instructions (entrypoint) -├── agents/ -│ └── openai.yaml # OpenAI agent interface definition └── references/ ├── action-stations.md # Risk tier definitions and controls ├── admiralty-templates.md # Template routing index @@ -258,8 +272,12 @@ The skill includes structured templates for consistent output across missions: ├── skeleton-crew.md ├── split-keel.md └── unclassified-engagement.md +agents/ +└── openai.yaml # OpenAI agent interface definition ``` +- `plugin.json` declares the plugin name, version, and component paths for Claude Code's plugin system. +- `marketplace.json` lets users add this repo as a plugin marketplace and install Nelson by name. - `SKILL.md` is the entrypoint that Claude reads when the skill is invoked. It defines the six-step workflow and references the supporting files. - Files in `references/` contain detailed guidance that Claude loads on demand — they are not all loaded into context at once. diff --git a/.claude/skills/nelson/agents/openai.yaml b/agents/openai.yaml similarity index 100% rename from .claude/skills/nelson/agents/openai.yaml rename to agents/openai.yaml diff --git a/scripts/check-references.sh b/scripts/check-references.sh index 3657515..99b6f53 100755 --- a/scripts/check-references.sh +++ b/scripts/check-references.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -SKILL_DIR=".claude/skills/nelson" +SKILL_DIR="skills/nelson" REF_DIR="$SKILL_DIR/references" errors=0 diff --git a/.claude/skills/nelson/SKILL.md b/skills/nelson/SKILL.md similarity index 100% rename from .claude/skills/nelson/SKILL.md rename to skills/nelson/SKILL.md diff --git a/.claude/skills/nelson/references/action-stations.md b/skills/nelson/references/action-stations.md similarity index 100% rename from .claude/skills/nelson/references/action-stations.md rename to skills/nelson/references/action-stations.md diff --git a/.claude/skills/nelson/references/admiralty-templates.md b/skills/nelson/references/admiralty-templates.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates.md rename to skills/nelson/references/admiralty-templates.md diff --git a/.claude/skills/nelson/references/admiralty-templates/battle-plan.md b/skills/nelson/references/admiralty-templates/battle-plan.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates/battle-plan.md rename to skills/nelson/references/admiralty-templates/battle-plan.md diff --git a/.claude/skills/nelson/references/admiralty-templates/captains-log.md b/skills/nelson/references/admiralty-templates/captains-log.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates/captains-log.md rename to skills/nelson/references/admiralty-templates/captains-log.md diff --git a/.claude/skills/nelson/references/admiralty-templates/crew-briefing.md b/skills/nelson/references/admiralty-templates/crew-briefing.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates/crew-briefing.md rename to skills/nelson/references/admiralty-templates/crew-briefing.md diff --git a/.claude/skills/nelson/references/admiralty-templates/quarterdeck-report.md b/skills/nelson/references/admiralty-templates/quarterdeck-report.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates/quarterdeck-report.md rename to skills/nelson/references/admiralty-templates/quarterdeck-report.md diff --git a/.claude/skills/nelson/references/admiralty-templates/red-cell-review.md b/skills/nelson/references/admiralty-templates/red-cell-review.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates/red-cell-review.md rename to skills/nelson/references/admiralty-templates/red-cell-review.md diff --git a/.claude/skills/nelson/references/admiralty-templates/sailing-orders.md b/skills/nelson/references/admiralty-templates/sailing-orders.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates/sailing-orders.md rename to skills/nelson/references/admiralty-templates/sailing-orders.md diff --git a/.claude/skills/nelson/references/admiralty-templates/ship-manifest.md b/skills/nelson/references/admiralty-templates/ship-manifest.md similarity index 100% rename from .claude/skills/nelson/references/admiralty-templates/ship-manifest.md rename to skills/nelson/references/admiralty-templates/ship-manifest.md diff --git a/.claude/skills/nelson/references/commendations.md b/skills/nelson/references/commendations.md similarity index 100% rename from .claude/skills/nelson/references/commendations.md rename to skills/nelson/references/commendations.md diff --git a/.claude/skills/nelson/references/crew-roles.md b/skills/nelson/references/crew-roles.md similarity index 100% rename from .claude/skills/nelson/references/crew-roles.md rename to skills/nelson/references/crew-roles.md diff --git a/.claude/skills/nelson/references/damage-control.md b/skills/nelson/references/damage-control.md similarity index 100% rename from .claude/skills/nelson/references/damage-control.md rename to skills/nelson/references/damage-control.md diff --git a/.claude/skills/nelson/references/damage-control/crew-overrun.md b/skills/nelson/references/damage-control/crew-overrun.md similarity index 100% rename from .claude/skills/nelson/references/damage-control/crew-overrun.md rename to skills/nelson/references/damage-control/crew-overrun.md diff --git a/.claude/skills/nelson/references/damage-control/escalation.md b/skills/nelson/references/damage-control/escalation.md similarity index 100% rename from .claude/skills/nelson/references/damage-control/escalation.md rename to skills/nelson/references/damage-control/escalation.md diff --git a/.claude/skills/nelson/references/damage-control/man-overboard.md b/skills/nelson/references/damage-control/man-overboard.md similarity index 100% rename from .claude/skills/nelson/references/damage-control/man-overboard.md rename to skills/nelson/references/damage-control/man-overboard.md diff --git a/.claude/skills/nelson/references/damage-control/partial-rollback.md b/skills/nelson/references/damage-control/partial-rollback.md similarity index 100% rename from .claude/skills/nelson/references/damage-control/partial-rollback.md rename to skills/nelson/references/damage-control/partial-rollback.md diff --git a/.claude/skills/nelson/references/damage-control/scuttle-and-reform.md b/skills/nelson/references/damage-control/scuttle-and-reform.md similarity index 100% rename from .claude/skills/nelson/references/damage-control/scuttle-and-reform.md rename to skills/nelson/references/damage-control/scuttle-and-reform.md diff --git a/.claude/skills/nelson/references/damage-control/session-resumption.md b/skills/nelson/references/damage-control/session-resumption.md similarity index 100% rename from .claude/skills/nelson/references/damage-control/session-resumption.md rename to skills/nelson/references/damage-control/session-resumption.md diff --git a/.claude/skills/nelson/references/squadron-composition.md b/skills/nelson/references/squadron-composition.md similarity index 100% rename from .claude/skills/nelson/references/squadron-composition.md rename to skills/nelson/references/squadron-composition.md diff --git a/.claude/skills/nelson/references/standing-orders.md b/skills/nelson/references/standing-orders.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders.md rename to skills/nelson/references/standing-orders.md diff --git a/.claude/skills/nelson/references/standing-orders/admiral-at-the-helm.md b/skills/nelson/references/standing-orders/admiral-at-the-helm.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/admiral-at-the-helm.md rename to skills/nelson/references/standing-orders/admiral-at-the-helm.md diff --git a/.claude/skills/nelson/references/standing-orders/all-hands-on-deck.md b/skills/nelson/references/standing-orders/all-hands-on-deck.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/all-hands-on-deck.md rename to skills/nelson/references/standing-orders/all-hands-on-deck.md diff --git a/.claude/skills/nelson/references/standing-orders/becalmed-fleet.md b/skills/nelson/references/standing-orders/becalmed-fleet.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/becalmed-fleet.md rename to skills/nelson/references/standing-orders/becalmed-fleet.md diff --git a/.claude/skills/nelson/references/standing-orders/captain-at-the-capstan.md b/skills/nelson/references/standing-orders/captain-at-the-capstan.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/captain-at-the-capstan.md rename to skills/nelson/references/standing-orders/captain-at-the-capstan.md diff --git a/.claude/skills/nelson/references/standing-orders/crew-without-canvas.md b/skills/nelson/references/standing-orders/crew-without-canvas.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/crew-without-canvas.md rename to skills/nelson/references/standing-orders/crew-without-canvas.md diff --git a/.claude/skills/nelson/references/standing-orders/drifting-anchorage.md b/skills/nelson/references/standing-orders/drifting-anchorage.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/drifting-anchorage.md rename to skills/nelson/references/standing-orders/drifting-anchorage.md diff --git a/.claude/skills/nelson/references/standing-orders/press-ganged-navigator.md b/skills/nelson/references/standing-orders/press-ganged-navigator.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/press-ganged-navigator.md rename to skills/nelson/references/standing-orders/press-ganged-navigator.md diff --git a/.claude/skills/nelson/references/standing-orders/pressed-crew.md b/skills/nelson/references/standing-orders/pressed-crew.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/pressed-crew.md rename to skills/nelson/references/standing-orders/pressed-crew.md diff --git a/.claude/skills/nelson/references/standing-orders/skeleton-crew.md b/skills/nelson/references/standing-orders/skeleton-crew.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/skeleton-crew.md rename to skills/nelson/references/standing-orders/skeleton-crew.md diff --git a/.claude/skills/nelson/references/standing-orders/split-keel.md b/skills/nelson/references/standing-orders/split-keel.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/split-keel.md rename to skills/nelson/references/standing-orders/split-keel.md diff --git a/.claude/skills/nelson/references/standing-orders/unclassified-engagement.md b/skills/nelson/references/standing-orders/unclassified-engagement.md similarity index 100% rename from .claude/skills/nelson/references/standing-orders/unclassified-engagement.md rename to skills/nelson/references/standing-orders/unclassified-engagement.md