ship Skill
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work — guides completion by presenting structured options for merge, PR, or cleanup
- GitHub Stars
- 13
- Dateien
- 1
- Letzter Commit
- 23. Juni 2026
- Lizenz
- MIT
- Erlaubte Tools
- —
Was macht der ship Skill?
ship ist ein Agent Skill. Use when implementation is complete, all tests pass, and you need to decide how to integrate the work — guides completion by presenting structured options for merge, PR, or cleanup.
So installierst du den ship Skill
Jeder Befehl kopiert den Skill-Ordner in das Skills-Verzeichnis des Clients. Starte den Client neu oder beginne eine neue Session, um ihn zu laden.Den ship Skill in Plugin installieren
/plugin marketplace add devnomad-byte/techneering /plugin install tn@techneering
Den ship Skill in Claude Code installieren
~/.claude/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship ~/.claude/skills/shipDen ship Skill in Claude Code (project) installieren
.claude/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship .claude/skills/shipDen ship Skill in Codex installieren
~/.agents/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship ~/.agents/skills/shipDen ship Skill in Gemini CLI installieren
~/.gemini/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship ~/.gemini/skills/shipDen ship Skill in Claude.ai installieren
npx degit devnomad-byte/techneering/skills/ship ship && zip -r ship.zip ship # claude.ai → Customize → Skills → + → Create skill → Upload a skill → ship.zip
SKILL.md
Auf GitHub ansehenFinishing a Development Branch
Guide completion of development work. Verify tests, present clear options, execute the chosen workflow, clean up.
Core Principle
VERIFY TESTS → PRESENT OPTIONS → EXECUTE CHOICE → CLEAN UP.
No merge without verification. No discard without confirmation.
Steps
Step 1: Verify Tests
Before presenting options, verify tests pass:
# Run project's test suite
npm test / cargo test / pytest / go test ./...
If tests fail: Stop. Report failures. Don't proceed. If tests pass: Continue to Step 2.
Step 2: Determine Base Branch
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
Step 3: Present Options
Present exactly these 4 options:
Implementation complete. What would you like to do?
1. Merge back to <base-branch> locally
2. Push and create a Pull Request
3. Keep the branch as-is (I'll handle it later)
4. Discard this work
Which option?
Step 4: Execute Choice
Option 1: Merge Locally
git checkout <base-branch>
git pull
git merge <feature-branch>
<test command>
git branch -d <feature-branch>
Then: Cleanup worktree
Option 2: Push and Create PR
git push -u origin <feature-branch>
gh pr create --title "<title>" --body "<body>"
Then: Cleanup worktree
Option 3: Keep As-Is
Report: "Keeping branch . Worktree preserved at ." Don't cleanup worktree.
Option 4: Discard
Confirm first: Require typed "discard" confirmation.
Then: Delete branch + cleanup worktree.
Also: Ask user if they want to remove the change directory from techneering/changes/. If yes, move to techneering/archive/YYYY-MM-DD-<name>-discarded/.
Step 5: Cleanup Worktree
For Options 1, 2, 4:
git worktree list | grep $(git branch --show-current)
# If in worktree:
git worktree remove <worktree-path>
Red Flags
| Thought | Reality |
|---|---|
| "Tests passed before, no need to rerun" | Must rerun before merge — context may have changed |
| "Discard without confirmation" | Discard is irreversible — must have typed confirmation |
| "Force push is fine" | Force push may overwrite others' work unless the user explicitly asks |
| "Skip merge, push directly" | Unmerged branches may have hidden conflicts |
| "Not enough options" | Exactly 4 options — don't add or remove any |
Common Rationalizations
| Excuse | Reality |
|---|---|
| "Tests should pass" | "Should" is not verification — run to confirm |
| "Small changes don't need a PR" | Small changes can still conflict — PR is a safety net |
| "Just force push" | Not allowed unless the user explicitly requests it |
| "Discard without confirmation" | Discard is irreversible — must confirm |
| "Worktree doesn't need cleanup" | Leftover worktrees cause confusion and disk bloat |
Quick Reference
| Dimension | Key point |
|---|---|
| Precondition | All tests must pass |
| 4 options | Merge / PR / Keep / Discard |
| Confirmation | Discard requires typed "discard" |
| Worktree cleanup | Options 1/2/4 clean up, option 3 keeps |
| Forbidden | Unconfirmed discard / force push / skipping tests |
Next Step
When done:
- Normal case (options 1 or 2) → invoke
tn:vaultto archive the change - User chose keep (option 3) → end, wait for user follow-up
- User chose discard (option 4) → clean change directory (move to archive or delete) → end
- User requests stop → end the current flow
Guardrails
- Never proceed with failing tests
- Never merge without verifying tests on result
- Never delete work without typed "discard" confirmation
- Never force-push without explicit user request
- Always present exactly 4 options
- Announce at start: "I'm using the tn:ship skill to complete this work."
Dateien in diesem Skill
1ship Skill-Fragen
Wie installiere ich den ship Skill in Claude Code?
Führe npx degit devnomad-byte/techneering/skills/ship ~/.claude/skills/ship aus. Claude Code lädt Skills aus ~/.claude/skills (alle Projekte) oder .claude/skills (ein Projekt) und nutzt einen Skill, wenn seine Beschreibung zur Aufgabe passt.
Welche Clients können den ship Skill nutzen?
Jeder Client, der das Agent Skills-Format liest: Claude Code, Codex, Gemini CLI und claude.ai (als ZIP hochladen). Skripte im Skill laufen nur dort, wo der Client Codeausführung erlaubt.