Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Prepares pull requests by running quality gates, drafting descriptions, and validating tests. Use when completing a feature and ready for review.
.claude/skills/athola-pr-prep/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 80% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 112% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 138% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 42% | 0% |
sanctum:pr-review)sanctum:commit-messages)Use this skill to stage changes and generate a PR summary. Run Skill(sanctum:git-workspace-review) first to capture the repository state and diffs.
Create TodoWrite items for these steps before starting:
pr-prep:workspace-reviewedpr-prep:quality-gatespr-prep:self-reviewedpr-prep:changes-summarizedpr-prep:testing-documentedpr-prep:pr-draftedpr-prep:content-verifiedMark each item as complete as the section is finished.
workspace-reviewed)Confirm that Skill(sanctum:git-workspace-review) is complete. If changes were staged after the initial review, re-execute the skill to refresh the context.
quality-gates)Execute formatting, linting, and tests using project-specific commands (e.g., make fmt, make lint, make test). Resolve all failures before proceeding. If a task cannot be executed locally, document the reason and the alternative validation performed. Language-specific commands and failure handling are detailed in modules/quality-gates.md.
If any plugin files changed (plugin.json, skills, commands, agents, or hooks), run make docs-sync-check to verify book/src/reference/capabilities-reference.md is current. If it reports discrepancies, run /sync-capabilities --fix or update the reference manually before proceeding.
self-reviewed)Read the diff as if you are a reviewer seeing it for the first time. This catches scope creep, stale debug code, and unclear changes before anyone else spends time on them.
Automated checks:
bash# Check for debug statements left in git diff --cached --name-only | xargs grep -nE \ '(console\.log|print\(|debugger|TODO|FIXME|HACK|XXX)' \ 2>/dev/null || true # Check for commented-out code blocks (3+ consecutive lines) git diff --cached | grep -c '^+.*//.*[a-zA-Z]' || true # Check for formatting-only commits mixed with feature work git log --oneline $(git merge-base HEAD origin/master)..HEAD | \ grep -iE '(fmt|format|lint|style|whitespace)' || true
Additive bias audit:
Run Skill(imbue:justify) to compute the additive bias score and check Iron Law compliance. If the score is YELLOW or above, justify each flagged signal before proceeding. If RED or STOP, rethink the approach.
Manual verification:
stated goal?
TODO markers left inIf issues are found, fix them before proceeding.
changes-summarized)Use the notes from the workspace review and the output of git diff --stat origin/main...HEAD to understand the scope. Identify key points in the diffs and group them into 2-4 paragraphs highlighting the technical changes and their rationale. Note breaking changes, migrations, or documentation updates.
testing-documented)List each test command executed and its result. If tests were skipped, document the reason and the mitigation plan.
Attach a manual test plan when any of these hold:
reproduce step fails on the parent commit.
Write it as numbered steps, each stating its expected result. A step without an expected result is a step the reviewer cannot fail. Format and examples are in modules/pr-template.md.
pr-drafted)Populate the template with the facts table (Who, Where, When), then the Why and What-and-how sections, then Test plan and Checklist. Write the title imperative and self-contained so it reads correctly in git log out of context.
All three table rows are filled on every PR. A row that does not apply says so (External: none, on merge) rather than being deleted, so a reader can tell an omitted blast radius from a blast radius of none.
Add issue references, screenshots, migration guides, or follow-up items as the change calls for them. Template structure, worked examples, and size variations are in modules/pr-template.md. The decision behind the structure, with its sources, is recorded in docs/adr/0021-pr-descriptions-in-two-registers.md.
content-verified)Apply Skill(scribe:slop-detector) principles to the draft. Verify that the PR description avoids tier-1 slop words (delve, comprehensive, leverage, utilize, robust, seamless) and formulaic phrases like "I'd be happy to" or "It should be noted." Ensure there is no AI attribution in the text and that all claims are grounded with evidence such as commands, numbers, or filenames. Use active voice and maintain a balanced structure with prose for context.
If the description contains slop, apply Skill(scribe:doc-generator) principles to ground claims with specifics, remove marketing language, and use direct statements.
Write the final PR description to the specified path, then display the file path and its contents for confirmation.
Do not include tool or AI attribution in the PR text. If changes are required mid-process, re-run quality gates. This skill covers preparation; pushing changes and opening the PR occurs outside this workflow.
If project-specific commands like make or npm are unavailable, verify the environment setup against the README. For permission errors, check write access to build directories. If a step fails without clear output, retry the command with verbose flags to inspect the logs.
pr-prep:workspace-reviewed throughpr-prep:content-verified) are marked complete before the skill declares done
failure is fixed before proceeding, not skipped
contents displayed for confirmation
filled, including the External: half of Where
rather than a general claim
Step 4 fires, with an expected result on every step
imbue:justify is GREEN, or YELLOWwith each flagged signal explicitly justified
comprehensive, leverage, robust, seamless, etc.)
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,471 | 6,984 | +56% | 1 | 1 | 0% | 218 | 2,203 | +911% | 0 | 0 | — |
case-02 | fail→fail | 4,604 | 9,666 | +110% | 1 | 1 | 0% | 231 | 2,365 | +924% | 0 | 0 | — |
case-03 | fail→fail | 6,019 | 7,987 | +33% | 1 | 1 | 0% | 216 | 2,327 | +977% | 0 | 0 | — |
case-04 | fail→fail | 16,156 | 6,007 | -63% | 1 | 1 | 0% | 1,497 | 2,830 | +89% | 0 | 0 | — |
case-05 | pass→fail | 2,439 | 10,216 | +319% | 1 | 1 | 0% | 380 | 2,711 | +613% | 0 | 0 | — |
case-06 | fail→fail | 4,946 | 7,752 | +57% | 1 | 1 | 0% | 765 | 3,104 | +306% | 0 | 0 | — |
case-07 | fail→pass | 14,026 | 2,446 | -83% | 1 | 1 | 0% | 2,265 | 2,277 | +1% | 0 | 0 | — |
case-08 | fail→fail | 11,978 | 7,063 | -41% | 1 | 1 | 0% | 1,791 | 2,889 | +61% | 0 | 0 | — |
case-09 | fail→pass | 7,578 | 2,823 | -63% | 1 | 1 | 0% | 1,219 | 2,195 | +80% | 0 | 0 | — |
case-10 | pass→pass | 8,876 | 1,978 | -78% | 1 | 1 | 0% | 1,312 | 2,067 | +58% | 0 | 0 | — |
case-11 | pass→pass | 7,753 | 2,377 | -69% | 1 | 1 | 0% | 1,202 | 2,075 | +73% | 0 | 0 | — |
case-12 | fail→pass | 7,895 | 4,708 | -40% | 1 | 1 | 0% | 1,245 | 2,638 | +112% | 0 | 0 | — |
case-13 | pass→pass | 7,500 | 3,423 | -54% | 1 | 1 | 0% | 1,245 | 2,378 | +91% | 0 | 0 | — |
case-14 | pass→pass | 8,596 | 3,615 | -58% | 1 | 1 | 0% | 1,280 | 2,432 | +90% | 0 | 0 | — |
case-15 | fail→pass | 7,509 | 5,281 | -30% | 1 | 1 | 0% | 1,124 | 2,680 | +138% | 0 | 0 | — |
case-16 | pass→pass | 7,689 | 3,054 | -60% | 1 | 1 | 0% | 1,216 | 2,308 | +90% | 0 | 0 | — |
case-17 | pass→pass | 11,502 | 2,617 | -77% | 1 | 1 | 0% | 1,858 | 2,276 | +22% | 0 | 0 | — |
case-18 | pass→pass | 10,122 | 3,249 | -68% | 1 | 1 | 0% | 1,467 | 2,258 | +54% | 0 | 0 | — |
case-19 | pass→pass | 9,587 | 3,957 | -59% | 1 | 1 | 0% | 1,428 | 2,454 | +72% | 0 | 0 | — |
case-20 | fail→pass | 16,414 | 4,376 | -73% | 1 | 1 | 0% | 1,708 | 2,430 | +42% | 0 | 0 | — |
case-21 | pass→pass | 10,640 | 4,973 | -53% | 1 | 1 | 0% | 1,502 | 2,536 | +69% | 0 | 0 | — |
case-22 | fail→pass | 6,073 | 2,136 | -65% | 1 | 1 | 0% | 915 | 2,215 | +142% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.