Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/khrichtchatyi/ship-it/commitnpx skills add khrichtchatyi/ship-it --skill commitgit clone --depth 1 https://github.com/khrichtchatyi/ship-itWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00051 | $0.01885 |
| Opus 5 | $0.00026 | $0.00942 |
| Sonnet 5 | $0.00010 | $0.00377 |
| Haiku 4.5 | $0.00005 | $0.00188 |
Grade A, and why
commit scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 245 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Operate on the Git repository in the current working directory.
Refuse to run when the directory is not a Git working tree.
Refuse to run when the branch has no commits yet and the user did not ask for an initial commit.
Refuse to run when the current branch is main,
master, develop, trunk, or matches the remote's
default branch from
git symbolic-ref --short refs/remotes/origin/HEAD —
commits belong on feature branches, not protected
defaults.
Override the default-branch refusal only when the user said in plain words to commit directly to that branch.
Trust the user — the changes in the working tree exist on purpose, and this skill only records them.
Do not edit source files.
Do not reformat code, run the linter, run the test suite, or start a build to "verify" the change before committing.
Verify the commit identity with git config user.email
and git config user.name before composing the
message.
Refuse to run when either is empty — otherwise Git
attributes the commit to root@hostname or a stale
default.
Inspect commit.gpgsign and gpg.format with
git config --get before running git commit.
Warn the user once when signing is required but no signing key is configured locally, so the commit does not fail mid-run on a hook.
Run git status and git diff (and
git diff --staged when something is already staged)
before composing the message.
Describe what is on disk, not what the conversation discussed earlier.
Show the user a one-line summary of the files about to be committed and the proposed subject.
Stop and wait for the user's reply before invoking
git commit, so the user can redirect the scope or
the wording before the commit lands.
Stage files with one git add <path> [<path> ...] call
listing every path the user named.
Never run git add -A, git add ., or git commit -a
unless the user said in plain words to stage
everything — those forms sweep in unrelated edits and
leak secrets.
Refuse to stage files whose names match a known secret
pattern: .env, .env.*, *.pem, *.key, id_rsa,
id_ed25519, credentials.json, *.tfstate,
*.kdbx, or any path inside .ssh/.
Refuse to stage a file whose diff introduces a
credential-looking line — an AKIA/ASIA AWS key, a
gh[pousr]_ GitHub token, an sk- API key, a
-----BEGIN ... PRIVATE KEY----- block, or a 40+
character base64 string assigned to a secret,
token, password, or key variable — and ask the
user to confirm before continuing.
Format the subject as <type>(<scope>): <description>
per Conventional Commits 1.0.0.
The scope is optional; the colon-space separator is mandatory.
Pick the type from the standard set: feat, fix,
docs, style, refactor, perf, test, build,
ci, chore, revert.
Do not invent new types.
Include a scope when every staged path sits under one
package, module, or top-level directory
(fix(parser): ..., feat(api): ...).
Omit the scope when the change spans unrelated areas.
Never invent a scope that does not match a directory or module name.
Append ! after the type or scope (feat!: or
feat(api)!:) when the commit breaks compatibility,
and add a BREAKING CHANGE: footer so tooling can
detect the break from the subject alone.
Write the description in the imperative mood, lowercase, with no trailing period.
Aim for 50 characters and never exceed 72
(fix(parser): handle empty input, not
Fixed the parser.).
Leave one blank line between the subject and the body, and another between the body and any footer — the parser splits the message on those blank lines.
Keep the body to a few short sentences naming the motivation and the visible effect.
Wrap body lines at 72 columns.
Omit the body when the subject already says everything — one-line commits ship.
Derive the message from the diff and the user's words, not from the branch name or a guess at intent.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 245 lines · 51 tokens per session scan A af0c08ebcaad
commit is a skill published in the GitHub repository khrichtchatyi/ship-it (2 stars, last pushed 19d ago), licensed MIT. It adds 51 tokens to every session and 1,885 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
create-pr
Create GitHub pull requests with Conventional Commits-formatted titles and structured PR bodies. Use when creating PRs, submitting changes for review, or when the user says /pr or asks to create a pull request.
issue-triage
Issue triage: audit open issues, categorize, detect duplicates, cross-ref PRs, risk assessment, post comments. Args: "all" for deep analysis of all, issue numbers to focus (e.g. "42 57"), "en"/"fr" for language, no arg = audit only in French.
github-pr-workflow
Prepare a GitHub pull request from a feature branch — branch hygiene, commit shape, title/body, verification notes, screenshots for UI work, and replies to review comments.
issue
Use when starting a chain from a GitHub issue — turning an issue URL or number into a triaged, planned, dispatched, and reviewed pull request. Classifies the thread (bug → root-cause discipline, feature → plan chain, question → drafted reply), synthesizes a spec from the issue's own acceptance criteria, then runs the…
github-secret-hunting
Find leaked API keys, tokens, and credentials in public GitHub repositories.
github
GitHub operations via gh CLI: issues, PRs, CI runs, code review, API queries.