agentleFS
agentdecksdkagentdecksdk/agentdeck/.claude/skills/ship-pr/SKILL.md

ship-pr

Skill4 starsChanged 2 months agoMITView on GitHub

Implement one agentdeck GitHub issue end to end as a PR: design in the PR body before code, code that matches its analog, self-review that catches the path no test exercises, then the merge gate. Five stages (understand, design, implement, self-review, gate). Use when implementing an agentdeck issue as deck-dev.

  • Reads credentials
  • Commits and pushes

26 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use ideate, triage and 7 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • OpenAISkill

    ideate

    Generate image-based alternatives, remixes, or new design directions from a Product Design brief. Use when the user asks for design variants, visual exploration, remixes, or image-generated approaches from provided context.

    Also in 4 projects that use this

  • Google CloudSkill

    triage

    Gather context on a change or bug and plan the implementation.

    Also in 4 projects that use this

  • GoogleSkill

    diagnosing-bugs

    Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.

    Also in 3 projects that use this

  • GoogleSkill

    domain-modeling

    Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model.

    Also in 3 projects that use this

  • Hugging FaceSkill

    implement

    Make tests pass. Invoke after /write-tests produces failing tests.

    Also in 3 projects that use this

  • MicrosoftSkill

    handoff

    Compact the current conversation into a handoff document for another agent to pick up.

    Also in 3 projects that use this

  • +3 more from google

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 26 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Every instruction below, and in references/, carries exactly one of these:

    line 41
  2. Very specific:

    Run uv run scripts/repomap.py.

    line 77
  3. Distinctive:

    Delete abandoned design and justifications the code no longer needs.

    line 97
  4. Distinctive:

    No attribution trailers anywhere.

    line 104

“Common” is measured: kept by at least 6 in 10 of the 26 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Ship a PR

Design the diff before writing it. The design binds nothing by itself, so Stage 1 stops and waits for the orchestrator to check it against the brief before Stage 2 touches source. Self-review is a checklist, not reflection: an unanswered question fails the stage, same as an unrun command.

Checklist

Copy this into your own response and check off each stage as you complete it:

Ship progress:
- [ ] 0. Understand: spec gate, engineering docs, seed the worktree
- [ ] 1. Design: PR body sections, then stop and wait for the design gate
- [ ] 2. Implement: match the analog, stay in budget (references/implement.md)
- [ ] 3. Self-review: the standard, ten shape questions, the coverage question (references/self-review.md)
- [ ] 4. Gate: make check green, gh pr ready

Freedom per stage

Thinking is high freedom. Verification and output are low: a checklist or a template you improvise is not one.

stagefreedomwhy
0 UnderstandLOW on the spec gate, HIGH on readingthe gate is binary: Done when and scope bounds present, or stop and comment
1 DesignLOW on format, HIGH on contentCI parses the budget block; what argument goes in it is judgment
2 ImplementHIGHopen field. Over-specifying here does real damage, and the issue this skill ships from puts it out of scope
3 Self-reviewLOWa checklist you can improvise is not a checklist
4 GateLOWexact commands, fragile sequence

Register

Every instruction below, and in references/, carries exactly one of these:

registerwordingcarries
CONSTRAINTMUST / NEVERwhat breaks if violated, named alongside it
EXPECTATION"the reviewer checks X"which finding class the miss earns
JUDGMENT"default is X, deviate when Y"nothing; your call

A CONSTRAINT without a stated consequence is a preference, not a CONSTRAINT: rewrite it or demote it.

Stages

stagefreedom / registerdoeswrites
0. UnderstandLOW / CONSTRAINT on the gateRead the issue as spec. Spec gate below. Seed the worktree.nothing, or a gate comment
1. DesignLOW / CONSTRAINT on formatPR body sections, then stop. references/design.mddraft PR, then wait
2. ImplementHIGH / JUDGMENTMatch the analog, stay in budget, test what the change exposes. references/implement.mdsource, tests, CHANGELOG
3. Self-reviewLOW / CONSTRAINTThe standard (major features), ten shape questions, the coverage question, answered in writing. references/self-review.mdthe answers, visible in your response
4. GateLOW / CONSTRAINTmake check green, compact the body, gh pr ready. Below.ready PR

Stage 0: Understand

CONSTRAINT: read the issue (gh issue view <n>), docs/engineering/ in full, the docs/patterns/ file for your concern, and docs-site/content/resources/roadmap.mdx for the arc this issue sits in, before any edit. Consequence: skip it and Stage 1's design has nothing real to bind against, and the design gate has nothing to compare it to.

CONSTRAINT, spec gate: if the issue lacks Done when outcomes or scope bounds (what must NOT be added), comment on the issue naming exactly what is missing and stop. Consequence of skipping this: an unbounded spec produces unbounded code, and the reviewer's Scope phase will file it.

Seed the worktree: copy .env if present, then uv venv --python 3.12 && make install.

Stage 1: Design, then wait

Run uv run scripts/repomap.py. Open a draft PR (branch feat/<n>-<slug> or fix/<n>-<slug>, gh pr create --draft targeting dev, Closes #<n>) and write the complete design into its body before touching source. Section shape, caps, and the design gate: references/design.md.

CONSTRAINT: after posting the design, stop. Do not edit source until the orchestrator (or the user, outside ship-issue) tells you to proceed. Consequence of skipping this: bloat argued against code that already works never gets fixed; catching it at design costs nothing.

Stage 2: Implement

JUDGMENT, high freedom. Depth and test rules: references/implement.md.

Stage 3: Self-review

CONSTRAINT: answer every question in references/self-review.md in writing before Stage 4, including the coverage question. An unanswered question fails the stage.

Stage 4: Gate

  • Compact the PR body: it describes the change as it now stands, not the rounds that produced it. Delete abandoned design and justifications the code no longer needs.
  • CONSTRAINT: run export PR_BODY="$(gh pr view <n> --json body -q .body)" && make check, 100% green, before gh pr ready. Two consequences: a red make check shipped by gh pr ready puts a red required check on the PR and it cannot merge; and without the export, scripts/check_docs_impact.py reads an empty body, reports affected pages as unreviewed (or the author never sees the list), so CI's required "Check affected documentation" goes red on a gate believed clean (#602, #607, #617).
  • No attribution trailers anywhere.

Answering a review

Reply in the review thread and resolve it. Never grow the PR body to answer a finding: a thread collapses once addressed, a body is what the next reader wades through to learn what the change does. The body only changes when the change does.

CONSTRAINT: resolve every thread, or the PR cannot merge. dev enforces this twice, as required_conversation_resolution in branch protection and required_review_thread_resolution in its ruleset, so one open thread holds the PR at BLOCKED with every check green, zero required approvals, and nothing in gh pr checks to explain it. Fixing the code is not answering the finding; the thread is.

gh api graphql -f query='mutation($t:ID!){resolveReviewThread(input:{threadId:$t}){thread{isResolved}}}' -f t="<thread-id>"

Thread ids come from reviewThreads on the pull request. Reply first, then resolve: a resolved thread with no reply tells the next reader nothing about what changed.

Measured by

Neither agent scores itself. What the dev side of this skill is measured on, from #431:

metricsource
BLOCK count on first reviewreviewer's verdict marker
rework ratio: commits after ready_for_review / totalgit log vs. the ready event
declared vs. actual concept budgetconcept_budget.py
declared vs. actual LOCquality_delta.py
files touched vs. files the issue nameddiff vs. issue body
PR body words vs. capbody, fences stripped
make check green before ready?check runs vs. ready timestamp
tokens, tool calls, wall timeagent completion record

Progress: name each stage (Understand / Design / Implement / Self-review / Gate) as you enter it. A silent multi-stage run reads as a stall.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.