Skill ship
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
- Estrellas en GitHub
- 13
- Archivos
- 1
- Último commit
- 23 jun 2026
- Licencia
- MIT
- Herramientas permitidas
- —
¿Qué hace la skill ship?
ship es una 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.
Cómo instalar la skill ship
Cada comando copia la carpeta de la skill al directorio de skills del cliente. Reinicia el cliente o inicia una nueva sesión para cargarla.Instalar la skill ship en Plugin
/plugin marketplace add devnomad-byte/techneering /plugin install tn@techneering
Instalar la skill ship en Claude Code
~/.claude/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship ~/.claude/skills/shipInstalar la skill ship en Claude Code (project)
.claude/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship .claude/skills/shipInstalar la skill ship en Codex
~/.agents/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship ~/.agents/skills/shipInstalar la skill ship en Gemini CLI
~/.gemini/skills/ship/SKILL.md
$ npx degit devnomad-byte/techneering/skills/ship ~/.gemini/skills/shipInstalar la skill ship en Claude.ai
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
Ver en GitHubFinishing 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."
Archivos de esta skill
1Preguntas sobre la skill ship
¿Cómo instalo la skill ship en Claude Code?
Ejecuta npx degit devnomad-byte/techneering/skills/ship ~/.claude/skills/ship. Claude Code carga las skills desde ~/.claude/skills (todos los proyectos) o .claude/skills (un proyecto) y usa una skill cuando su descripción coincide con la tarea.
¿Qué clientes pueden usar la skill ship?
Cualquier cliente que lea el formato Agent Skills: Claude Code, Codex, Gemini CLI y claude.ai (subir como ZIP). Los scripts de la skill se ejecutan solo donde el cliente permite la ejecución de código.