kit/plugins/git-agent/skills/ship/SKILL.md
Ships changes by staging, committing, pushing, and opening a PR. Supports GitHub and GitLab in a single guided flow. Use when the user asks to ship changes or commit and create a PR.
npx skillsauth add shawn-sandy/agentics shipInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Stage, commit, push, and create a pull/merge request in one flow. Supports
GitHub (gh) and GitLab (glab). Follow these steps in strict order. STOP
immediately after step 8.
For commit-only use commit-agent, for PR-only use pr-agent.
Call ExitPlanMode immediately and silently — always, unconditionally, before
any other action. Do not prompt the user. Staging, committing,
pushing, and creating a pull/merge request are mutations and cannot proceed
inside plan mode.
ExitPlanMode is a deferred tool whose schema must be loaded before it can be
called. Use ToolSearch with select:ExitPlanMode first, then call
ExitPlanMode. Both steps happen silently with no user-visible output.
Error handling: If ExitPlanMode returns the exact error "You are not in plan mode", treat that as success — plan mode was already off. Do not abort or surface the error to the user; continue to the next step.
Run all checks before any mutation. Stop on the first failure.
Clean working tree: Run git status. If nothing to commit, output: "Nothing
to ship — working tree is clean." and STOP.
Detached HEAD: Run git branch --show-current. If the output is empty,
output: "Cannot ship: repository is in detached HEAD state. Checkout a branch
first." and STOP.
On main or master: If the current branch is main or master, output:
"Cannot ship from the default branch. Switch to a feature branch first." and
STOP.
Detect platform: Run git remote get-url origin. Determine the platform
from the URL:
github.com → GitHub (use gh commands below)gitlab.com or gitlab → GitLab (use glab commands below)gh --version then
glab --version. Use whichever is installed.CLI not available or not authenticated:
For GitHub: run gh auth status. If gh is not installed or returns an auth
error, output:
GitHub CLI is required. Install it from https://cli.github.com/ and run `gh auth login`.
and STOP.
For GitLab: run glab auth status. If glab is not installed or returns an
auth error, output:
GitLab CLI is required. Install it from https://gitlab.com/gitlab-org/cli and run `glab auth login`.
and STOP.
Run git add -A to stage all changes.
This trusts .gitignore to exclude sensitive or generated files. The user is
responsible for .gitignore correctness.
Run git diff --staged to inspect all staged changes.
Write a conventional commit message:
<type>(<scope>): <description>
Rules:
feat, fix, docs, refactor, test, chore, perf, style,
ci, buildplugins/git-agent →
plugins/git-agent)Run:
git commit -m "<message>"
Output the commit hash and message on success.
If a pre-commit hook fails: report the hook's output verbatim and STOP.
Do not retry. Do not use --no-verify. Do not modify the staged files. Let the
user fix the issue.
Run:
git rev-parse --abbrev-ref --symbolic-full-name @{u}
If the command exits non-zero (no upstream tracking ref), run:
git push -u origin <current-branch>
If the command exits zero (upstream exists), run:
git push
For GitHub, run:
gh pr view --json url
For GitLab, run:
glab mr view --output json
If a PR/MR already exists, output: "Pushed to existing PR/MR: <url>" and STOP. The new commit is already on the remote.
Run:
git symbolic-ref refs/remotes/origin/HEAD
Strip the refs/remotes/origin/ prefix to get the base branch name. If this
command fails, fall back to main, then master (try
git rev-parse --verify main to confirm existence before falling back).
Look for plan files on this branch that link to GitHub or GitLab issues.
Run:
git diff --name-only <base>...HEAD -- 'docs/plans/*.html' 'docs/plans/**/*.html'
For each file listed, use Grep to search for the pattern <meta name="plan-issue" content=" and extract the URL value. Collect all unique URLs found.
If any URLs are found, include a ## Linked Issues section in the PR/MR body (Step 8) with one Closes <url> line per unique URL. If no plan files are found or none contain issue references, skip this section entirely.
Gather content:
git log <base>..HEAD --oneline
git diff <base>...HEAD --stat
Title: short summary of the branch's changes (≤ 70 characters), imperative mood.
Body: use this structure:
## Summary
- <bullet 1>
- <bullet 2>
## Changes
<brief description of what changed and why>
## Linked Issues
Closes <url>
Omit the ## Linked Issues section entirely if Step 7.5 found no issue references.
For GitHub, run:
gh pr create --title "<title>" --body "<body>"
For GitLab, run:
glab mr create --title "<title>" --description "<body>"
Output the PR/MR URL and STOP.
STOP here. Do not analyze code, run tests, review the diff, suggest follow-up tasks, or take any further action.
data-ai
Craft-prompt: interviews users and assembles a structured AI prompt using Anthropic best-practice techniques. Use when the user runs /plan-agent:craft-prompt or asks to craft a prompt.
development
Generates a SOCIAL.md project sharing config by analyzing the codebase. Use when asked to set up social sharing preferences or create a SOCIAL.md file.
development
Explains how any project file, component, or concept works. Reads source files and synthesizes developer-friendly principles, social copy, and a dark-mode card. Use when asked 'how does X work' or 'explain X'.
development
Generate an HTML implementation-plan document. Produces a self-contained .html plan file with steps, acceptance criteria, and metadata. Use when the user asks to create a plan document, generate an HTML plan, or write a plan file — not for general planning questions.