ship-hygiene
Periodic multi-PR sweep — dashboard of open PRs across repos.
Skill by cheshirecode
Chalk Labs
Need help deploying ship-hygiene?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/cheshirecode-ship-hygiene
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, data, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ship-hygiene
What's inside
- Skill name
ship-hygiene- Description
- Periodic multi-PR sweep — dashboard of open PRs across repos. Surfaces stale worklog tasks, CI red patterns, unresolved reviewer comments, post-merge cleanup notes. For single-PR code review or closeout, use $pr-review. Triggers 'tidy up before I ship', 'PR hygiene', 'clean my open PRs', '/ship-hygiene'.
- License
- Unlicense
- Instructions
- 82 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (2)
- SKILL.md
- leak-scan.sh · bin/
SKILL.md (first lines)
# ship-hygiene
`bin/leak-scan.sh` is a compatibility launcher requiring installed `pr-review`; the scanner and token list live there.
This skill owns the multi-PR dashboard. `$pr-review` owns individual reviews
and closeouts. Flag suspicious PRs here; let that skill inspect them.
## Resolve `$WORKLOG_BIN`
This skill invokes worklog scripts via `$WORKLOG_BIN`. `worklog/SKILL.md` owns how to resolve it — follow it, don't restate it here.
## When to use
- Pre-handoff (you're about to hand a stack off to a reviewer or a teammate)
- End-of-week clean-up
- After a multi-day spike where the worklog task body has crossed 150 lines and the decision is already made
- User explicitly: "tidy my open PRs", "ship hygiene", "/ship-hygiene"
Skip if: only one PR open, body is short, no recent worklog activity. Overhead not earned.
Surface CI failures, unresolved review, and missing approvals; do not auto-fix
them. Prepare cleanup notes only; never tear down an open PR's resources.
## Recipe
1. **Resolve which worklog task to clean.** Use the named task or a task linked to the current repo/PR. Recency is only a discovery hint; verify ownership and relevance before editing. If no task is identified, skip compression and continue the PR sweep.
2. **Read it.** Slop trigger: **>150 lines AND the spike/decision is already made**. If shorter or still-active exploration, skip — leave the iteration drama until it's decided.
3. **Compress** if triggered. **Drop:** ToT/Reflexion scaffolding, multi-row iteration tables, "Assumptions to verify" once verified, redundant intermediate options. **Preserve:** final decision rationale, lessons/gotchas, re-runnable commands, frontmatter, `next_action`, open follow-up items.
4. **List open PRs** across all repos you contribute to. Use `gh pr list --author @me --state open --json number,title,reviewDecision,isDraft,updatedAt` (omit `--repo` for the default remote, or pass `--repo <owner/name>` for each additional repo).
5. **Per-PR dashboard:** for each non-draft PR, gather `body_length`, `failed_checks`, `pending_checks`, `comment_count`, last-comment-author. Print as a table.
6. **Flag suspicious PRs, then hand each one to `$pr-review`.** Flag on the
dashboard signals only: a body over 5KB, a title with no Conv-Commit prefix,
red CI, or an unanswered reviewer comment. Then invoke `$pr-review review #N`
per flagged PR. Do not call pr-review's scripts by path: the two skills install
into separate directories, so a relative path between them resolves only by
accident.
7. **CI triage:** group failed checks by name. If the same check fails on N>1 PRs, inspect logs for a shared cause before calling it systemic. Group a confirmed shared cause into one actionable line.
8. **Comment triage:** check the last comment's author per PR. Bot signatures (`github-actions`, `vercel`, preview-deploy automation under the user's own login) → not unresolved review. Surface only PRs with a real reviewer comment that hasn't been responded to.
9. **Post-merge cleanup note:** for each open PR backed by a sibling worktree and/or a live preview, assemble the teardown commands and record them as a `[POST-MERGE-CLEANUP]` note in the worklog task (and surface them in the output). Discover the pieces: worktree via `git worktree list | grep <branch-slug>`; preview name from the branch slug / earlier deploy; services from the diff (`frontend`, `ui`, `admin-dashboard`). Template (do NOT run until the PR is merged):
- preview: `make -C deployment/staging preview-cleanup-<svc> PREVIEW_NAME=<name>` (one per deployed service)
- worktree: `git worktree remove <path>`
- branch: usually auto-deleted on squash-merge; otherwise `git push origin --delete <branch>` + `git branch -D <branch>`
If no relevant Worklog task was identified, include the note only in the report. Otherwise refresh an existing `[POST-MERGE-CLEANUP]` note for this PR rather than duplicating it.
10. **Checkpoint** the worklog body change(s): `"$WORKLOG_BIN/checkpoint.sh" <slug>`. Don't bundle unrelated working-tree changes. Use the plain command — its staged-scope guard is what enforces that. `worklog/modes/sync.md` owns the guard's exit codes, `--include=<path>`, and the force bypass.
On a non-zero exit, read Worklog’s `modes/sync.md` checkpoint failure rules before retrying; do not report a refused checkpoint as saved.
## Output format
```
=== worklog tidy ===
<slug>: N → M lines (-X%). Commit: <sha>
=== PR dashboard (N scanned) ===
#N title body CI-red unres-comments last_from
#7 feat(upload): support s3 4KB [x] 1 alice@
#12 fix(ci): pin node@22 1KB ok 0 bot(gha)
=== Systemic CI findings ===
- build/docker: failing on 4+ PRs — likely workflow config bug, not per-PR
=== Unresolved reviewer comments ===
#7: alice@ suggested renaming function — reply needed
=== post-merge cleanup (prepare, do NOT run until merged) ===
#7: worktree <path> · branch <branch> · preview <name>
Recorded as [POST-MERGE-CLEANUP] in <slug>.
```
## Boundaries
Do not rewrite PR titles/bodies for stylistic consistency or treat a body edit
as a reply to a reviewer. Keep reviewer-facing text technically precise and
free of internal Worklog/skill/process details. Posting messages requires
authorization already given in the conversation or obtained before posting.
## Pairings
- `karpathy-guidelines` — apply during the title/body flagging step. "Don't refactor what isn't broken" — most PRs need nothing.
- For brittle outputs, invoke `$example-led-instructions`: 0/1/few-shot gate, max 1-3 examples, skip if obvious.From cheshirecode/dotfiles, Unlicense.
More from cheshirecode/dotfiles
- 0.570score
artifact-gate
cheshirecode
Gate an HTML artifact before publishing - tag balance, dead anchors, duplicate ids, non-absolute links, drifted self-claims, and code links that still resolve…
SkillAFreshness: AClaude Code +9 - 0.570score
job-application
cheshirecode
Generate a tailored job-application package (resume, cover letter, skills keyword block) for one job description.
SkillAFreshness: AClaude Code +9 - 0.567score
loop-engineering
cheshirecode
Run bounded, evidence-driven loops for repeated, resumable, delegated, or scheduled work.
SkillAFreshness: AClaude Code +9 - 0.567score
pr-review
cheshirecode
Review one PR or close out completed work.
SkillAFreshness: AClaude Code +9 - 0.567score
fast-crawl
cheshirecode
Fetch and crawl web pages as markdown locally, fast, with no browser session.
SkillAFreshness: AClaude Code +9 - 0.567score
browser-use-setup
cheshirecode
Install, upgrade, wrap, and connect the browser-use CLI across macOS and Linux, with sandbox-safe testing and platform-specific debugging.
SkillAFreshness: AClaude Code +9 - 0.566score
requirement-sync
cheshirecode
Propagate a changed requirement across every place it is written down, and find where the old version still reads as current.
SkillAFreshness: AClaude Code +9 - 0.565score
job-search
cheshirecode
Source remote job postings from public boards (Greenhouse boards, HN Who-is-hiring, RemoteOK, LinkedIn via the browser harness, direct URLs), filter them for…
SkillAFreshness: AClaude Code +9 - 0.529score
council
cheshirecode
Run multi-angle, audited research with independent voting.
SkillBFreshness: BClaude Code +9 - 0.529score
loop-helpers
cheshirecode
Optional deterministic helpers for loop-engineering context packs and fail-open Caveman transport decisions.
SkillBFreshness: BClaude Code +9 - 0.529score
evidence-gate
cheshirecode
Gate completion claims by mapping every observable goal or acceptance criterion to typed command, artifact, Git, GitHub, or URL evidence.
SkillBFreshness: BClaude Code +9 - 0.529score
serena-rg-search
cheshirecode
Pick the right tool for multi-faceted code search across symbols, text, semantic meaning, JSON, git history, and logs.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 14, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Unlicense
- Repository
- github.com/cheshirecode/dotfiles
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from cheshirecode
- 0.570score
artifact-gate
cheshirecode
Gate an HTML artifact before publishing - tag balance, dead anchors, duplicate ids, non-absolute links, drifted self-claims, and code links that still resolve…
SkillAFreshness: AClaude Code +9 - 0.570score
job-application
cheshirecode
Generate a tailored job-application package (resume, cover letter, skills keyword block) for one job description.
SkillAFreshness: AClaude Code +9 - 0.567score
browser-use-setup
cheshirecode
Install, upgrade, wrap, and connect the browser-use CLI across macOS and Linux, with sandbox-safe testing and platform-specific debugging.
SkillAFreshness: AClaude Code +9 - 0.567score
fast-crawl
cheshirecode
Fetch and crawl web pages as markdown locally, fast, with no browser session.
SkillAFreshness: AClaude Code +9 - 0.567score
loop-engineering
cheshirecode
Run bounded, evidence-driven loops for repeated, resumable, delegated, or scheduled work.
SkillAFreshness: AClaude Code +9 - 0.567score
pr-review
cheshirecode
Review one PR or close out completed work.
SkillAFreshness: AClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get ship-hygiene running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
ship-hygiene skill. Agent Mart. https://agentmart.dev/skills/cheshirecode-ship-hygiene (last updated 2026-10-24)