pr-dev
Use when an open PR must be driven to completion — 'finish this PR', 'address review comments', 'land the PR', 'ship/land/close the PR', 'drive PR #N to…
Skill by Tamircohen28
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/tamircohen28-pr-dev
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, 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/pr-dev
What's inside
- Skill name
pr-dev- Description
- Use when an open PR must be driven to completion — 'finish this PR', 'address review comments', 'land the PR', 'ship/land/close the PR', 'drive PR #N to merge', 'fix CI and merge', 'clean up this PR', 'the checks are red, get it green and merged', 'pr-dev 42'.
- License
- MIT
- Metadata
- capability: pr-drive · updated-date: 2026-07-09
- Instructions
- 447 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (12)
- SKILL.md
- evals.json · evals/
- objective.json · evals/files/objectives/auth-system/
- trigger-evals.json · evals/
- ci-channels.md · references/
- ci-monitor-loop.md · references/
- drive-discipline.md · references/
- cleanup-after-merge.sh · scripts/
- fetch-pr-state.sh · scripts/
- resolve-merge-policy.sh · scripts/
- resolve-thread.sh · scripts/
- review-reply.md.tmpl · templates/
SKILL.md (first lines)
# pr-dev
The **final delivery lifecycle driver**. One objective's PR, from open → review addressed → CI green → merged, under the repository's actual merge policy.
## Why this skill exists
After a PR opens, the real work is staying on top of CI failures, reviewer threads, and merge conflicts — often across many minutes. A one-shot "check and report" leaves the PR stalled whenever a simple retry or two-line fix would have unblocked it, and it misses threads that arrive after the initial check. This skill runs a **persistent drive loop** — re-fetch, act, push, loop — so nobody babysits GitHub tabs.
Two things changed from the earlier version, and they matter:
1. **It is not called once per worker.** A worker task ends at commit + handoff. `pr-dev` runs **once per objective**, on the PR that `deliver-dev` opened from the integration branch. Driving five PRs for one objective was the defect, not the workflow.
2. **Auto-merge is a resolved policy, not an invariant.** The old rule ("always enable auto-merge") is right for most repositories and wrong for any repository or user that says otherwise. Policy is now resolved once, from a documented precedence, and reported.
## Validation tier
**Tier 3 — delivery/CI.** CI is the independent authority here. This skill does not re-run the full local suite on every loop; it runs the repo's pre-PR gates before each push it makes (Tier 2) and lets CI be Tier 3.
## Inputs
Resolve once at startup; reuse throughout:
| Input | Resolution |
|-------|-----------|
| No argument | `gh pr view --json number -q .number` from current branch |
| PR number `42` | Use directly |
| PR URL | Extract number from URL |
If no PR resolves, ask and stop.
## Skill directory (all platforms)
Resolve once at startup as `SKILL_DIR` — every `scripts/`, `templates/`, and `references/` path below uses it. Never hardcode an absolute path.
Try in order:
1. `$CLAUDE_SKILL_DIR` when set (Claude Code sets this automatically)
2. `$CLAUDE_PLUGIN_ROOT/skills/dev-workflow/pr-dev` when the plugin root is known
3. `<git-root>/skills/dev-workflow/pr-dev` when developing this repo from a checkout
4. `find ~/.claude/plugins -path "*/dev-workflow/pr-dev/scripts/fetch-pr-state.sh" -print -quit | xargs dirname` as a last resort
If none resolve to a directory containing `scripts/fetch-pr-state.sh`, stop and say so.
| Platform | Typical resolution |
|----------|-------------------|
| Claude Code / Desktop | `$CLAUDE_SKILL_DIR` or `$CLAUDE_PLUGIN_ROOT/skills/dev-workflow/pr-dev` |
| Cursor / Codex / Gemini CLI / OpenCode | Git-root path when working from a checkout; otherwise the installed skills root + `dev-workflow/pr-dev` |
## Startup — resolve context and policy (before the first loop pass)
### 1. Objective context
A PR that came from an objective carries metadata worth knowing: which tasks it contains, which branch is the integration branch, and what delivery strategy was chosen.
```bash
PR_JSON="$(gh pr view "$PR" --json number,headRefName,baseRefName,body)"
HEAD="$(jq -r .headRefName <<<"$PR_JSON")"
BASE="$(jq -r .baseRefName <<<"$PR_JSON")"
# objective/<slug> as the head branch, or an "Objective: <id>" line in the body
OBJECTIVE_ID="$(sed -n 's|^objective/||p' <<<"$HEAD")"
[ -n "$OBJECTIVE_ID" ] || OBJECTIVE_ID="$(jq -r .body <<<"$PR_JSON" | sed -n 's/^[Oo]bjective:[[:space:]]*`\{0,1\}\([a-z0-9-]*\).*/\1/p' | head -1)"
```
When an objective resolves, read `.dev-files/objectives/$OBJECTIVE_ID/objective.json` and note:
- `integration_branch` — this is the PR head. **Never** push to a `worker/*` branch from here; worker branches are already merged into it.
- `delivery.strategy` — `single-pr` means this PR is the whole objective. If you find yourself about to open a second PR for the same objective, stop: that is the defect this design removes.
- `delivery.auto_merge` — feeds the policy resolution below.
- `tasks` — useful context when writing review replies ("that path belongs to task-003").
No objective is a perfectly normal case (a one-off PR). Continue without one.
### 2. Merge policy
```bash
POLICY="$(bash "$SKILL_DIR/scripts/resolve-merge-policy.sh" ${REPO:+--repo "$REPO"} "$PR" "${OBJECTIVE_ID:-}")"
echo "$POLICY" | jq .
AUTO_MERGE="$(jq -r .auto_merge <<<"$POLICY")" # enable | skip
MERGE_METHOD="$(jq -r .merge_method <<<"$POLICY")" # squash | merge | rebase
MERGE_QUEUE="$(jq -r .merge_queue <<<"$POLICY")" # true | false | null
STRICT="$(jq -r .strict_branch_update <<<"$POLICY")" # true | false | null
PROT_SRC="$(jq -r .protection_source <<<"$POLICY")" # classic | rulesets | classic+rulesets | none
```
Precedence, highest first (documented in the script's header):
1. `TAMIRS_AUTO_MERGE=always|never` — explicit user/session override
2. the objective's `delivery.auto_merge`
3. `.dev-files/policy.json` → `delivery.auto_merge`
4. repository capability — a repo with auto-merge disabled overrules any request to enable it
5. **documented default: enable auto-merge when the repository allows it**
State the resolution in one line before looping:
```
Merge policy: auto-merge ENABLED (default: repository allows auto-merge), squash + delete branch.
Base master: strict branch updates required, 9 required checks, review required. Merge queue: none.
```
or
```
Merge policy: auto-merge SKIPPED (objective auth-system delivery.auto_merge=false).
I will drive to green and ask you before merging.
```
Then enable it, if and only if policy says so:
```bash
if [ "$AUTO_MERGE" = "enable" ]; then
gh pr merge "$PR" --auto "--$MERGE_METHOD" --delete-branch
fi
```
## Core drive loop
```
startup:
resolve PR, HEAD, BASE, OBJECTIVE_IDFrom Tamircohen28/tamirs-superpowers, MIT.
More from Tamircohen28/tamirs-superpowers
- 0.599score
diagnose-refusal
Tamircohen28
Use when a coding-agent session refused, blocked, filtered, or returned HTTP 403/401/429 instead of doing the asked work, and the user needs to know WHICH…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
targeted-debug
Tamircohen28
Use when the user pastes a stack trace, traceback, panic, crash log, or error message with a file:line and wants the root cause.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
deliver-dev
Tamircohen28
Use when an integrated objective must become a delivery — 'deliver this objective', 'ship it', 'open the PR for objective X', 'all tasks are done, create the…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
diagnose-objective
Tamircohen28
Use when an orchestrated objective failed, stalled or looks wrong and you need to know why from its state files — 'why did objective X fail', 'diagnose the…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
plan-dev
Tamircohen28
Use when informal work — a task, a feature request, a spec, a review doc, a list of features to implement — must become a structured plan before any code is…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
start-dev
Tamircohen28
Use when a task must be implemented, built, coded or shipped — from a GitHub issue number, free-text task description, or spec file.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
switch-dev
Tamircohen28
Use when switching AI coding platforms mid-task without losing context — Claude Code, Cursor, Codex, Gemini CLI, OpenCode.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
dark-terminal-doc
Tamircohen28
Use when a single-file HTML technical document should carry a dark developer / terminal aesthetic — monospace, terminal-green on near-black.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
platform-sync
Tamircohen28
Use when this repo may have fallen behind the AI coding platforms it targets — Claude Code, Codex CLI, Cursor, Gemini CLI, OpenCode.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
mcp-builder
Tamircohen28
Use when building or scaffolding an MCP (Model Context Protocol) server wrapping a REST API, database, or service as tools for an MCP client.
SkillAFreshness: A★ 2Claude Code +9 - 0.596score
mcp-pagination
Tamircohen28
Internal guardrail invoked by mcp-builder only — audits MCP tool schemas with list_*, search_*, find_*, get_all_* or SQL-executing operations for missing…
SkillAFreshness: A★ 2Claude Code +9 - 0.595score
docs-review
Tamircohen28
Use when README.md and docs/** need a full documentation audit — a sweep for broken links, stale counts, template conformance, agent-instruction consistency…
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 5
- Last commit (this folder)
- Oct 17, 2026 (12 days ago)
- Last release
- Oct 24, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Tamircohen28
- 0.599score
targeted-debug
Tamircohen28
Use when the user pastes a stack trace, traceback, panic, crash log, or error message with a file:line and wants the root cause.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
diagnose-refusal
Tamircohen28
Use when a coding-agent session refused, blocked, filtered, or returned HTTP 403/401/429 instead of doing the asked work, and the user needs to know WHICH…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
deliver-dev
Tamircohen28
Use when an integrated objective must become a delivery — 'deliver this objective', 'ship it', 'open the PR for objective X', 'all tasks are done, create the…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
diagnose-objective
Tamircohen28
Use when an orchestrated objective failed, stalled or looks wrong and you need to know why from its state files — 'why did objective X fail', 'diagnose the…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
plan-dev
Tamircohen28
Use when informal work — a task, a feature request, a spec, a review doc, a list of features to implement — must become a structured plan before any code is…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
start-dev
Tamircohen28
Use when a task must be implemented, built, coded or shipped — from a GitHub issue number, free-text task description, or spec file.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
pr-dev skill. Agent Mart. https://agentmart.dev/skills/tamircohen28-pr-dev (last updated 2026-10-24)