Using skills with your agent

Shipmoor Team
June 11, 2026
3 min read

Skills are agent-neutral behaviors rendered into each agent’s native instruction format. This page covers the per-agent specifics and walks one real change through the loops.

Per-agent targets

AgentInstall commandWhat the agent reads
Claude Codeshipmoor skills install claudeA managed block in CLAUDE.md
Codexshipmoor skills install codexA managed block in AGENTS.md
Cursorshipmoor skills install cursor.cursor/rules/shipmoor.md
Aidershipmoor skills install aider.aider.conf.yml (+ .aider.shipmoor.yml include)

After install, the skills are just there — the agent picks them up from its instruction file on the next session. In Claude Code, shipmoor-review also responds to slash-style triggers like /shipmoor, /shipmoor-changed, /shipmoor-gate, and /shipmoor-explain.

The agent needs the shipmoor binary on PATH (skills shell out to it; they contain no detection logic of their own). If your agent runs in a sandbox or CI, install the CLI there too: curl -fsSL https://dl.shipmoor.dev/install.sh | bash.

A worked loop

Here’s the shape of a real session (this mirrors our own end-to-end testing of shipmoor 0.4.0 with Claude Code on a Flask checkout):

1. The task. You ask the agent: “Add a helper that attaches a unique X-Request-ID header to a Flask response.” With shipmoor-agent-guard loaded, the agent checks the manifest before importing anything and avoids placeholder logic from the start.

2. The agent implements, then shipmoor-review kicks in before it declares done:

shipmoor scan --changed --fail-on high
# ✓ gate pass · 0 blockers  exit 0

3. The claim check. shipmoor-intent-contract records the task in .shipmoor/intent.yaml and runs the change-scoped claim check:

shipmoor scan --changed --intent "Add a helper that attaches a unique X-Request-ID header to a Flask response" \
  --json --output .shipmoor/report.json

If the diff matches the task, the verdict says so; if the agent drifted — say the helper quietly logs request bodies instead of setting the header — the gap is named before any human reviews it. See Reading the verdict.

4. If something was found, shipmoor-fix drives the bounded repair loop:

shipmoor explain <finding-id> --from .shipmoor/report.json
# patch → re-scan → report before/after delta

5. Ready to ship. shipmoor-pr-preflight runs the merge-base diff with the gate and produces a PR note:

shipmoor scan --diff main...HEAD --fail-on high --markdown-summary pr-note.md

Agent-specific notes

  • Claude Code — the richest target: the skill block, the slash triggers, and (with the Agent Harness (preview)) lifecycle hooks that scan after every edit. Skills and harness write separate managed regions and never conflict.
  • Codex — same bundle via AGENTS.md; the harness adds a wrapped runtime (shipmoor-harness codex -- …) (preview).
  • Cursor — reads .cursor/rules/shipmoor.md; pairs with the harness’s watch mode (preview) for scan-on-change.
  • Aider — configured through .aider.conf.yml; the natural pairing is a lint-cmd running shipmoor scan --changed --fail-on high, so exit code 1 drives Aider’s own repair loop.

Next

Last updated on June 11, 2026

Was this article helpful?

Your response is saved on this device.