skill-ship
Skill4 starsChanged 50 days agoMITView on GitHub
Ships changed skills from this repository in one ordered pass — runs the SkillSpector security gate, regenerates the README skill index and counts, syncs changed skills one-way into the local agent skills directory, and hands off to /conventional-commit. Use when the user types /skill-ship, says "ship the skills", "release these skills", "sync and commit skills", or has finished editing anything under skills/. Stops at the first failed gate; never deletes installed skills.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- kannaka-labs/Kannaktopustheir own version, first seen Oct 13, 2026
- nyldn/claude-octopustheir own version, first seen Aug 13, 2026
- imsovikde/souvik-skillstheir own version, first seen Jun 26, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- nyldn/claude-octopus★ 4.4ksame name
- imsovikde/souvik-skills★ 1same name
- kannaka-labs/Kannaktopus★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository144 other files it gives its agents.
- skills/composition-patterns/AGENTS.mdAGENTS.md
- skills/react-best-practices/AGENTS.mdAGENTS.md
- skills/react-native-skills/AGENTS.mdAGENTS.md
- antislop-codeSkill
- anti-slopSkill
- antislopSkill
- api-and-interface-designSkill
- api-endpoint-builderSkill
- astroSkill
- bddSkill
- brainstormSkill
- bring-me-ideasSkill
- brooks-lintSkill
- browser-testing-with-devtoolsSkill
- cavemanSkill
- ci-cd-and-automationSkill
- cloudflareSkill
- codebase-audit-pre-pushSkill
- codebase-designSkill
- code-review-and-qualitySkill
- code-simplificationSkill
- composition-patternsSkill
- constraint-driven-developmentSkill
- context7-mcpSkill
- context-engineeringSkill
- conventional-commitSkill
- conventional-commit-with-coauthorSkill
- credentialsSkill
- data-dummerSkill
- dddSkill
- debugging-and-error-recoverySkill
- deprecation-and-migrationSkill
- 3d-uiSkill
- ai-native-uiSkill
- aurora-uiSkill
- bento-uiSkill
- brutalismSkill
- brutalist-typographySkill
- card-based-designSkill
- claymorphismSkill
- color-blockingSkill
- command-center-uiSkill
- cyberpunk-uiSkill
- cyber-y2kSkill
- dark-modeSkill
- dashboard-designSkill
- data-dense-designSkill
- duotone-designSkill
- editorial-designSkill
- flat-design-2Skill
- flat-designSkill
- floating-uiSkill
- frutiger-aeroSkill
- glassmorphismSkill
- gradient-designSkill
- high-contrastSkill
- holographic-uiSkill
- isometric-designSkill
- layered-designSkill
- material-designSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. 0 are common, 1 is distinctive, and 1 is very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 14
Scripts do the mechanical work: Never hand-edit the README index tables or counts.
- Distinctive: line 94
Verify, do not assume:
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill Ship
Release changed skills in one ordered pass: scan → index → sync → commit. Each phase is a gate. A red gate stops the run and reports; it is never skipped, bypassed, or worked around.
Contract
- Order is fixed. Scan before index, index before sync, sync before commit. A skill that fails the scan must never reach the installed directory or the remote.
- Scripts do the mechanical work. Never hand-edit the README index tables or counts.
scripts/gen-readme.pyowns them; editing by hand is how the index drifted. - Sync is one-way and additive. Copy repo → installed. Never delete from the installed directory: it holds archived and third-party skills that are not in this repo.
- Push only when asked. Committing is part of the pass; pushing is a separate, explicit request.
Phase 0 — Preflight
git status --short
git diff --statEstablish what changed under skills/. If nothing under skills/ or README.md changed, say so and stop — there is nothing to ship.
Resolve the installed skills directory. Default is ~/.claude/skills; on Windows Git Bash that is $HOME/.claude/skills (/c/Users/<name>/.claude/skills). Confirm it exists before Phase 3.
SKILLS_HOME="${SKILLS_HOME:-$HOME/.claude/skills}"
test -d "$SKILLS_HOME" && echo "installed: $SKILLS_HOME" || echo "missing: $SKILLS_HOME"Phase 1 — Scan
bash scripts/scan-skills.sh skills| Exit | Meaning | Action |
| 0 | gate: clean | Continue. |
| 1 | A batch scored above the threshold | Stop. Show skillspector-reports/summary.md and the flagged skills. |
| 2 | Scanner missing or a batch failed | Stop. Report the error text verbatim. |
On exit 1, read the flagged lines before judging them. Security-aware skill content often trips the scanner; that is a finding to investigate and report, not a reason to lower the threshold or exclude the skill.
skillspector-reports/ is a build artifact. Do not commit it.
Phase 2 — Index
python scripts/gen-readme.py
git diff --stat README.mdThe generator keeps each skill in the README section it already lives in and keeps its curated display name and description. It only:
- fills rows whose description is empty or
---, - removes rows whose skill folder no longer exists (
removed:), - appends new skills under
### Uncategorized(uncategorized:), - updates the active and archived counts.
Report every removed: and uncategorized: line. An uncategorized skill means a human decision is pending: move its row into the right section by hand (the generator preserves placement on the next run), then run the generator again.
Confirm the result is stable:
python scripts/gen-readme.py --checkExit 0 is required to continue. The Featured Skills table is hand-written and is never touched by the generator; update it manually only when a featured skill changed behavior.
Phase 3 — Sync
Copy only skills that exist in the repo and differ from their installed copy.
SKILLS_HOME="${SKILLS_HOME:-$HOME/.claude/skills}"
before=$(find "$SKILLS_HOME" -mindepth 1 -maxdepth 1 -type d | wc -l)
for dir in skills/*/; do
name=$(basename "$dir")
[ -f "$dir/SKILL.md" ] || continue
if ! diff -rq --strip-trailing-cr "$dir" "$SKILLS_HOME/$name" >/dev/null 2>&1; then
mkdir -p "$SKILLS_HOME/$name"
cp -R "$dir." "$SKILLS_HOME/$name/"
echo "synced: $name"
fi
done
after=$(find "$SKILLS_HOME" -mindepth 1 -maxdepth 1 -type d | wc -l)
echo "installed skills: $before -> $after"Verify, do not assume:
for dir in skills/*/; do
name=$(basename "$dir")
diff -rq --strip-trailing-cr "$dir" "$SKILLS_HOME/$name" >/dev/null 2>&1 || echo "MISMATCH: $name"
doneNo MISMATCH lines, and after >= before. A drop in the installed count means something deleted a skill — stop and report.
cp -R overwrites changed files but leaves files that were removed from the repo in the installed copy. If a skill's file was deliberately deleted, name the stale installed file and ask before removing it.
Phase 4 — Commit
Hand off to /conventional-commit, which splits the working tree into one commit per concern. Typical concerns in a ship:
| Concern | Example subject |
| A new skill | feat(skills): add skill-ship |
| A changed skill | docs(skills): tighten explore phase 2 |
| Script or CI change | feat(scripts): add readme generator |
| Regenerated index | docs: regenerate skill index |
The repository's own commit rules and the user's instructions override these examples. Do not push unless the user asked.
Report
Skill ship
scan gate: clean (91 skills)
index filled 2, removed 0, uncategorized 0 — --check clean
sync 3 synced, 0 mismatches, installed 146 -> 147
commit 2 commits (not pushed)On a stop, the report names the phase that failed, the exact error, and what the user must decide. Phases after the failure are listed as not run, never as passed.
Common Mistakes
| Mistake | Why It Breaks | Correct Approach |
| Editing README index rows or counts by hand | Drifts from the frontmatter; the next run disagrees | Run scripts/gen-readme.py |
| Syncing before the scan passes | Installs a skill the gate would have rejected | Scan first, always |
| Raising the threshold to make the gate green | Disables the gate for every skill | Investigate the flagged lines and report them |
| Deleting from the installed directory | Removes archived and third-party skills | One-way, additive sync only |
| Reporting a skipped phase as passed | Hides that a gate never ran | Mark it not run with the reason |
Committing skillspector-reports/ | Commits build artifacts | Leave it untracked |
| Pushing because the commit succeeded | Push is a separate, explicit request | Stop after commit unless asked |
Leaving a skill under ### Uncategorized | The index loses its structure | Ask where it belongs, move the row, regenerate |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

