Skip to content
Back to skills

Skill Ship

ASecurity

Ship a checked skill from the skillwright main branch to the shared shelf, with no release id to type, then prove it in a fresh session. Use when a skill change is merged, when the post-merge hook did not ship, or when a ship needs a rollback.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsgogit

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add foxrun-ai/foxrun --skill skill-ship --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Skill Ship?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Skill Ship
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/foxrun-ai-skill-ship/badge)](https://www.skillsdirectory.com/skills/foxrun-ai-skill-ship)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: skill-ship
description: "Ship a checked skill from the skillwright main branch to the shared shelf, with no release id to type, then prove it in a fresh session. Use when a skill change is merged, when the post-merge hook did not ship, or when a ship needs a rollback."
kind: knowledge
---

# Skill Ship

Source: `~/.foxrun/skillwright/skills/<name>/`. Shelf: `~/.foxrun/skills/<name>/`.
The tool is `~/.foxrun/skillwright/tools/skill_ship.py`. Run `skill_ship.py ship -h` for its flags.
Git rules come from `~/.foxrun/config/git.md`, then `~/.foxrun/config/git.local.md`.

## Steps

1. Work on a branch in the normal `~/.foxrun/skillwright` clone. Never make a worktree. Run `skillify check <name>` and the skill's tests.
   Done when: the check and the tests pass.
2. Open a PR. A second agent, not its author, reads the change. The lead merges it when its tests pass. A change that touches money, sends, deletes, a gateway restart, or a contract file keeps its own gate.
   Done when: the PR is merged to `main`.
3. Check the upstream: `git -C ~/.foxrun/skillwright rev-parse '@{u}'`. Then `git pull --ff-only` on `main`.
   Done when: `main` equals `@{u}`.
4. The post-merge hook ships each skill a commit on `main` touches. Watch `~/.foxrun/skillwright/skill-state/ships/trigger.log` with a tracked background task. If the hook did not start a ship, run `~/.foxrun/skillwright/tools/skill_ship.py ship --skill <name>` from `main`.
   Done when: one ship receipt exists in `~/.foxrun/skillwright/skill-state/ships/` for this release.
5. Prove delivery. In a fresh session, ask one real question that needs the changed skill. Presence on the shelf is not proof.
   Done when: the fresh session answers from the new skill text.

## Rollback

- A failed ship rolls back by itself before it returns.
- To roll back by hand, read `previous_release_id` in `~/.foxrun/skillwright/skill-state/ships/<release-id>.json`. Never infer it from the trigger log.

## Gotchas

- `ship --skill <name>` ships one skill and keeps every other shelf skill as it is.
- A second ship with the same bytes makes no release. The pin and the shipped list name the same release.
- Never ship from the shelf copy or an old source. The source is the skillwright clone on `main`.
- Hermes sees a new or changed skill only after a gateway restart. A restart needs the person's yes.

Files in this skill

  • SKILL.md2.3 KB
  • replays/read-fresh-proof.json366 B
  • replays/read-one-skill.json248 B
  • replays/read-rollback-id.json241 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.