Organisation for your agent teams inspired by time-tested Royal Navy operating procedures.
npx skills add https://github.com/harrymunro/nelson --skill nelsonCLI を使用してこのスキルをインストールし、ワークスペースで SKILL.md ワークフローの使用を開始します。
Squadron-scale agent coordination for Claude Code — with risk tiers, damage control, and decision logs.
A Claude Code skill that organises multi-agent work into structured naval operations: sailing orders define the mission, captains command parallel workstreams, action stations enforce risk-appropriate controls, and a captain's log captures every decision for audit.
4 risk tiers · 10 damage control procedures · 10 mission templates · 7 crew roles · 15 standing orders
Captain Horatio Nelson — John Francis Rigaud, 1781. Image: Wikimedia Commons
/plugin marketplace add harrymunro/nelson
/plugin install nelson@nelson-marketplace
Then just describe your mission:
Use Nelson to migrate the payment module from Stripe v2 to v3
Nelson is a Claude Code skill — it loads automatically when your request matches. No slash command needed. See Prerequisites for the full agent-team experience with split panes.
https://github.com/user-attachments/assets/2468679d-39f5-4efb-9d93-43d43eee8907
Nelson gives Claude an eight-step operational framework for tackling complex missions:
Most agent orchestration tools focus on starting missions. Nelson focuses on completing them safely.
Nelson gives your missions a shared vocabulary: "action stations" instead of "risk tier escalation", "hull integrity" instead of "context window consumption", "man overboard" instead of "stuck agent replacement". The names stick. So do the habits.
Nelson coordinates its own development — recent releases have been planned and executed as Nelson missions.
It may be overkill if you're doing a quick, single-file edit.
Both rapid-execution frameworks and Nelson's structured approach are useful — they optimise for different constraints.
| Approach | Best when | Trade-off |
|---|---|---|
| Nelson Navy structure | You need repeatable quality gates, explicit ownership, and a clear decision log across parallel work | More setup and coordination overhead up front |
| OmO/RuFlo-style rapid flow | You need the fastest possible movement on a narrow, low-risk path | Less formal checkpointing and role separation |
If you need fast parallel execution with minimal ceremony, OmO or RuFlo may suit you better. If coordination, auditability, and safe scaling matter more than raw tempo, Nelson is the better fit.
The skill selects one of three execution modes based on your mission:
| Mode | When to use | How it works |
|---|---|---|
single-session |
Sequential tasks, low complexity, heavy same-file editing | Claude works through tasks in order within one session |
subagents |
Parallel tasks where workers only report back to the coordinator | Claude spawns subagents that work independently and return results |
agent-team |
Parallel tasks where workers need to coordinate with each other | Claude creates an agent team with direct teammate-to-teammate communication |
Nelson uses a three-tier hierarchy. The admiral coordinates captains, each captain commands a named ship, and crew members aboard each ship do the specialist work.
┌───────────┐
│ Admiral │
└─────┬─────┘
┌─────────────┼─────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Captain │ │ Captain │ │ Red-Cell │
│ HMS Daring │ │ HMS Kent │ │ Navigator │
└─────┬─────┘ └─────┬─────┘ └───────────┘
┌────┼────┐ ┌────┼────┐
▼ ▼ ▼ ▼ ▼ ▼
XO PWO MEO PWO NO COX
Squadron level:
Ship level (crew per captain, 0-4 members):
| Role | Abbr | Function | When to crew |
|---|---|---|---|
| Executive Officer | XO | Integration & orchestration | 3+ crew or interdependent sub-tasks |
| Principal Warfare Officer | PWO | Core implementation | Almost always (default doer) |
| Navigating Officer | NO | Codebase research & exploration | Unfamiliar code, large codebase |
| Marine Engineering Officer | MEO | Testing & validation | Station 1+ or non-trivial verification |
| Weapon Engineering Officer | WEO | Config, infrastructure & systems integration | Significant config/infra work |
| Logistics Officer | LOGO | Documentation & dependency management | Docs as deliverable, dep management |
| Coxswain | COX | Standards review & quality | Station 1+ with established conventions |
Navigating Officer (NO) and Coxswain (COX) are read-only — they report findings but never modify files.
Ships are named from real Royal Navy warships, matched roughly to task weight: frigates for general-purpose, destroyers for high-tempo, patrol vessels for small tasks, historic flagships for critical-path, and submarines for research.
Squadron size caps at 10 squadron-level agents (admiral, captains, red-cell navigator). Crew are additional — up to 4 per ship. If a task needs more crew, split it into two ships.
Here's an example of the crew in action: we create four captains. Two of the captains are single-crew (minimum, since captains don't do the work themselves) and two of them are two-crew. So we have 11 agents working together in total:
https://github.com/user-attachments/assets/f3bafd06-790e-44a0-9061-7d1fd666b445
Every task is classified into a risk tier before execution. Higher tiers require more controls:
| Station | Name | When | Required controls |
|---|---|---|---|
| 0 | Patrol | Low blast radius, easy rollback | Basic validation, rollback step |
| 1 | Caution | User-visible changes, moderate impact | Independent review, negative test, rollback note |
| 2 | Action | Security/compliance/data integrity implications | Red-cell review, failure-mode checklist, go/no-go checkpoint |
| 3 | Trafalgar | Irreversible actions, regulated/safety-sensitive | Minimal scope, human confirmation, two-step verification, contingency plan |
Tasks at Station 1 and above also run a failure-mode checklist:
Most agent frameworks assume the happy path. Nelson includes battle-tested procedures for when things go wrong — stuck agents, budget overruns, faulty outputs, and context window exhaustion all have documented recovery paths.
Hull integrity monitoring tracks context window consumption across the squadron. The admiral reads exact token counts from Claude Code session JSONL files at each quarterdeck checkpoint and maintains a squadron readiness board:
| Status | Remaining | Action |
|---|---|---|
| Green | 75-100% | Operating normally |
| Amber | 60-74% | Monitor closely, avoid new work |
| Red | 40-59% | Relief on station — begin handover |
| Critical | Below 40% | Immediate relief |
Relief on station replaces a ship whose context window is depleted. The damaged ship writes a turnover brief to file, a fresh replacement reads it and continues the mission. Chained reliefs (A -> B -> C) are supported for long-running tasks. The flagship monitors its own hull integrity too and can hand over to a new session.
The token counts come from the API usage data that Claude Code already records on every assistant turn — no estimation heuristics, no paid APIs, no external dependencies. A utility script (scripts/count-tokens.py) extracts the data and produces damage reports.
Other damage control procedures: man overboard (stuck agent replacement), session resumption (picking up after interruption), partial rollback (reverting faulty work), crew overrun (budget recovery), scuttle and reform (mission abort), and escalation (chain of command).
When multiple ships work in parallel, undeclared file overlaps are a common source of merge pain. Nelson ships two tools that catch conflicts at different stages:
nelson_conflict_scan.py) — parses the battle plan before Action Stations, walks the codebase import graph, and flags "split-keel" violations where two captains own files that import each other.nelson_conflict_radar.py) — compares live git status against the battle plan's file ownership declarations during execution and alerts on changed files that have no registered owner.Both tools are stdlib-only and run as part of the mission workflow without additional setup.
Nelson is not purely advisory. A set of Claude Code hooks (hooks/nelson_hooks.py) enforce structural guarantees at the tool level:
| Event | Hook | What it enforces |
|---|---|---|
PreToolUse on Agent |
preflight |
Station tier gate, file ownership conflicts, mode-tool consistency |
PreToolUse on TaskCreate |
mode-check |
Rejects task creation in non-agent-team modes |
PostToolUse on Write/Edit |
brief-validate |
Turnover brief quality gate |
TaskCompleted |
task-complete |
Validation evidence and station controls |
TeammateIdle |
idle-ship |
Paid-off standing order advisory |
Plugin installs auto-discover hooks/hooks.json and wire these up with no user action. Hooks degrade gracefully: if no active Nelson mission is found, they exit cleanly and do not interfere with non-Nelson workflows. See Installation for manual-install caveats.
Nelson accumulates learning across missions in .nelson/memory/. Each completed mission feeds a persistent pattern library (patterns.json) and standing-order violation stats (standing-order-stats.json). Four nelson-data.py subcommands expose this:
brief — pre-mission intelligence brief: relevant patterns, win rate, standing order hot spots, and context-matched precedents drawn from prior missions.analytics — focused metric queries (success-rate, standing-orders, efficiency) with text or JSON output.history / index — review and rebuild the fleet intelligence index across past missions.stand-down --adopt/--avoid — capture reusable patterns at mission close so the next run benefits.Running index backfills the memory store for missions completed before the feature existed, so upgrading is non-destructive.
Once every ship has reported on Stand Down, the admiral produces a fleet-wide synthesis — consolidating captain outputs into a single decision record. Boundary controls prevent premature synthesis (before all ships have reported) and keep the admiral out of direct implementation.
The skill includes structured templates for consistent output across missions:
agent-team execution mode. Plugin installs ship a settings.json that enables this automatically. For manual installs, add this to your settings.json:{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}
Add the marketplace and install:
/plugin marketplace add harrymunro/nelson
/plugin install nelson@nelson-marketplace
Open Claude Code and say:
Install skills from https://github.com/harrymunro/nelson
Claude will clone the repo, copy the skill into your project's .claude/skills/ directory, and clean up. To install it globally across all projects, ask Claude to install it to ~/.claude/skills/ instead.
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/skills/nelson .claude/skills/nelson
rm -rf /tmp/nelson
# Or user-level (personal, all projects)
cp -r /tmp/nelson/skills/nelson ~/.claude/skills/nelson
Then commit .claude/skills/nelson/ to version control so your team can use it.
Heads up: the manual path installs the skill only. Nelson's enforcement hooks and the bundled
settings.json(which enables agent teams) are wired up automatically by the plugin system via${CLAUDE_PLUGIN_ROOT}and are not picked up by a skill-only copy. If you rely on the station-tier gate, file ownership checks, or turnover brief validation, use the plugin install above. To enable agent teams with a manual install, add the env var from Prerequisites to your ownsettings.json.
If you have used /plugin marketplace add to install you can run /plugin, arrow over to "Marketplaces", select "nelson-marketplace" and then "Enable auto-updates".
If you not enabled auto-updates you can update the marketplace with: "Marketplaces" -> "nelson-marketplace" -> "Update marketplace".
If those steps don't seem to be working it is best to remove the marketplace ("Marketplaces" -> "nelson-marketplace" -> "Remove marketplace") and re-install so Claude updates the other files it keeps track of concerning marketplaces and plugins.
/plugin marketplace update nelson-marketplace
/plugin install nelson@nelson-marketplace
If you have installed by copying into skills/ at user or project level then you will need to remove the skills/nelson/ directory and run a Manual install again.
Open Claude Code and ask:
What skills are available?
You should see nelson listed. You can also test it by saying "Use Nelson to..." followed by a task.
If you have a Team Marketplace for your Cursor you can add nelson there. See Add a team marketplace in the cursor documentation. The needed gihub repository url is https://github.com/harrymunro/nelson.git. Once the marketplace is installed you can install nelson from it.
If you do not have access to a Team Marketplace you can still install locally for Linux and MacOS.
cd ~/.cursor/plugins/local
git clone -b main --depth 1 https://github.com/harrymunro/nelson.git
To update the plugin after that:
cd ~/.cursor/plugins/local/nelson
git pull
Nelson is a Claude Code skill — it loads automatically when your request matches. No slash command required. Just describe your mission and mention Nelson.
Nelson selects the best execution mode (single-session, subagents, or agent team) based on your mission:
Use Nelson to migrate the payment processing module from Stripe v2 to v3
If you want teammate-to-teammate coordination, ask for an agent team explicitly:
Use an agent team with Nelson to refactor the authentication system across
the API layer, frontend, and test suite
For the highest-capability run — Opus 4.6 agents, fully crewed ships, maximum coordination:
Use an agent team with Nelson and Opus 4.6 agents with fully crewed ships
to deliver the new billing integration
For maximum control, provide your own sailing orders:
Use Nelson to deliver this:
Sailing orders:
- Outcome: All API endpoints return consistent error responses
- Success metric: Zero test failures, all error responses match the schema
- Deadline: This session
Constraints:
- Token/time budget: Stay under 50k tokens
- Forbidden actions: Do not modify the database schema
Scope:
- In scope: src/api/ and tests/api/
- Out of scope: Frontend error handling
You can also invoke it directly with the /nelson slash command if you prefer.
Edit the individual template files in references/admiralty-templates/ to match your team's reporting style. The templates use plain text format — adjust fields, add sections, or remove what you don't need.
Edit references/action-stations.md to change what controls are required at each station level. For example, you might require red-cell review at Station 1 instead of Station 2 for a security-sensitive project.
Edit references/squadron-composition.md to adjust the decision matrix or default team sizes.
.claude-plugin/ # Plugin + marketplace manifests
settings.json # Default settings (enables agent teams)
hooks/ # Enforcement hooks (auto-discovered by plugin)
skills/nelson/
├── SKILL.md # Main skill instructions (entrypoint)
├── references/ # Supporting docs loaded on demand
│ ├── action-stations.md # Risk tier definitions
│ ├── admiralty-templates/ # 10 structured templates
│ ├── crew-roles.md # Crew role definitions & ship names
│ ├── damage-control/ # 10 recovery procedures
│ ├── standing-orders/ # 15 anti-pattern guards
│ └── squadron-composition.md # Mode selection & team sizing
└── scripts/ # nelson-data.py, conflict scan, tests
.claude-plugin/
├── plugin.json # Plugin manifest
└── marketplace.json # Marketplace definition (self-hosted)
settings.json # Plugin default settings (enables agent teams)
hooks/
├── hooks.json # Skill-scoped hook configuration (auto-discovered)
├── nelson_hooks.py # Hook enforcement script (preflight, brief, task, idle)
└── test_nelson_hooks.py # Tests for hook handlers
skills/nelson/
├── SKILL.md # Main skill instructions (entrypoint)
├── references/
│ ├── action-stations.md # Risk tier definitions and controls
│ ├── admiralty-templates/ # Individual template files
│ │ ├── battle-plan.md
│ │ ├── captains-log.md
│ │ ├── crew-briefing.md
│ │ ├── damage-report.md
│ │ ├── marine-deployment-brief.md
│ │ ├── quarterdeck-report.md
│ │ ├── red-cell-review.md
│ │ ├── sailing-orders.md
│ │ ├── ship-manifest.md
│ │ └── turnover-brief.md
│ ├── commendations.md # Recognition signals and correction guidance
│ ├── crew-roles.md # Crew role definitions, ship names, sizing
│ ├── damage-control/ # Individual procedure files
│ │ ├── comms-failure.md
│ │ ├── crew-overrun.md
│ │ ├── escalation.md
│ │ ├── hull-integrity.md
│ │ ├── man-overboard.md
│ │ ├── partial-rollback.md
│ │ ├── relief-on-station.md
│ │ ├── scuttle-and-reform.md
│ │ ├── session-hygiene.md
│ │ └── session-resumption.md
│ ├── model-selection.md # Cost-optimized model assignment for agents
│ ├── royal-marines.md # Royal Marines deployment rules
│ ├── squadron-composition.md # Mode selection and team sizing rules
│ ├── structured-data.md # Structured fleet data capture reference
│ ├── tool-mapping.md # Nelson-to-Claude Code tool reference
│ └── standing-orders/ # Individual anti-pattern files
│ ├── admiral-at-the-helm.md
│ ├── all-hands-on-deck.md
│ ├── awaiting-admiralty.md
│ ├── battalion-ashore.md
│ ├── becalmed-fleet.md
│ ├── captain-at-the-capstan.md
│ ├── crew-without-canvas.md
│ ├── drifting-anchorage.md
│ ├── light-squadron.md
│ ├── paid-off.md
│ ├── press-ganged-navigator.md
│ ├── pressed-crew.md
│ ├── skeleton-crew.md
│ ├── split-keel.md
│ └── unclassified-engagement.md
└── scripts/ # Distributed with the skill (since v1.9.1)
├── nelson-data.py # CLI entry point for structured data capture
├── nelson_data_utils.py # Shared I/O, validation, constants
├── nelson_data_memory.py # Cross-mission memory store (v2.0.0)
├── nelson_data_lifecycle.py # Mission lifecycle commands
├── nelson_data_fleet.py # Fleet intelligence & analytics
├── nelson_conflict_scan.py # Pre-flight split-keel scanner
├── nelson_conflict_radar.py # Runtime file-conflict monitor
├── nelson-phase.py # Deterministic phase engine
└── test_*.py # Test suite (pytest)
agents/
└── nelson.md # Agent definition with skill binding
scripts/
├── check-references.sh # Cross-reference validation for documentation links
└── count-tokens.py # Token counter for hull integrity monitoring
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 eight-step workflow and references the supporting files.references/ contain detailed guidance that Claude loads on demand — they are not all loaded into context at once.hooks/hooks.json is auto-discovered by the Claude Code plugin system; the commands resolve via ${CLAUDE_PLUGIN_ROOT} and only run when Nelson is installed as a plugin.skills/nelson/scripts/ ships nelson-data.py and its sibling modules (including the conflict radar and pre-flight conflict scanner) alongside the skill so they are distributed on install. The root-level scripts/ directory holds repo-level utilities (count-tokens.py, check-references.sh).Each mission creates a timestamped directory for its runtime artifacts. Previous missions are preserved — each run gets its own directory. The SESSION_ID suffix is an 8-character hex string generated at session start via uuidgen, ensuring concurrent Nelson sessions in the same repository create distinct directories.
Nelson writes two kinds of artifacts side by side: prose for humans (captain's log, quarterdeck report, turnover briefs) and structured JSON for machines (session resumption, hooks, analytics). The JSON files are produced by nelson-data.py subcommands called at each workflow step.
.nelson/
├── missions/{YYYY-MM-DD_HHMMSS}_{SESSION_ID}/
│ ├── captains-log.md — Written at stand-down
│ ├── quarterdeck-report.md — Updated at every checkpoint
│ ├── damage-reports/ — Ship damage reports (JSON)
│ ├── turnover-briefs/ — Ship turnover briefs (markdown)
│ ├── sailing-orders.json — Mission definition (init)
│ ├── battle-plan.json — Tasks, owners, file ownership (plan-approved)
│ ├── mission-log.json — Event stream (events, handoffs, checkpoints)
│ ├── fleet-status.json — Current squadron state (live)
│ └── stand-down.json — Final outcome, decisions, adopted/avoided patterns
└── memory/ — Cross-mission memory store (v2.0.0)
├── patterns.json — Accumulated adopt/avoid pattern library
└── standing-order-stats.json — Violation frequency & correlations
Nelson requires agent-team coordination primitives — shared task lists, peer messaging between agents, and team lifecycle management. These are the foundation of Nelson's squadron model: captains coordinating in parallel, the admiral running quarterdeck checkpoints, and damage control procedures that depend on live communication between agents.
| Platform | Status | Notes |
|---|---|---|
| Claude Code | Supported | Full support for all three execution modes (single-session, subagents, agent-team) |
| Cursor | Experimental | See installation instructions above |
| Codex CLI | Not yet supported | Lacks agent-team primitives. Agents SDK orchestration may provide a path — monitoring |
| OpenCode | Not yet supported | Agent-team feature exists on dev branch but has not reached stable release |
| Gemini CLI | Not yet supported | No multi-agent coordination primitives. Subagent support is single-level only |
Why not degrade gracefully? Nelson's value is the coordination layer — quarterdeck rhythm, peer messaging, shared task lists, damage control, crew hierarchy. On a platform without agent teams, Nelson would degrade to "subagents with Royal Navy naming", which doesn't justify the complexity. When these platforms add agent-team support, Nelson will follow.
We are actively tracking multi-agent developments across these platforms. If you're interested in helping bring Nelson to a new platform, open an issue.
single-session or subagents mode. Full details: Agent teams documentation./plugin marketplace add harrymunro/nelson
/plugin install nelson@nelson-marketplace
Then just say "Use Nelson to..." and describe your mission, or open an issue if something breaks.
This project is not associated with, endorsed by, or affiliated with the British Royal Navy or the UK Ministry of Defence. All Royal Navy terminology and references are used purely as a creative framework for organising software development tasks.
MIT — see LICENSE for details.