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/specscore-pull-request
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
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
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/pull-request
What's inside
- Skill name
pull-request- Description
- Gate-and-create-one-PR twin of the ship skill. Enforces the project's pre-PR gates on the current branch via the shared reviewer-gates layer, then creates exactly one pull request — built-in git push + gh pr create by default, or a project-configured delegate skill — and emits pull_request.created. It gates, creates one PR, and records; it never merges, deploys, stacks multiple PRs, retries a delegate, or orchestrates. Trigger: "pull-request", "/pull-request", "open a PR", "specstudio:pull-request".
- License
- MIT
- Instructions
- 119 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Pull Request
Open a pull request for the current branch only after the project's pre-PR
gates pass. Pull-request **gates, creates one PR, and records** — it never
merges, deploys, stacks, retries, or orchestrates. The verify gate runs
*before* the PR exists, so a branch below the project's bar (e.g. failing
tests or coverage) never reaches an open PR.
Implements the [Pull Request Skill Feature](../../spec/features/skills/pull-request/README.md).
## When to Use
- The user is on a feature branch with commits ahead of the base branch and wants to open a pull request.
- The user wants the project's verify gate (tests, coverage) plus any configured review to run before the PR is created, not after CI flags it.
**Refuse and redirect when:**
- The current branch is the repository's default branch → print the reason and recommend creating a feature branch first. Create no PR; exit non-zero. (AC: `rejects-default-branch`)
- The current branch has no commits ahead of the base branch → print "nothing to open a PR for" and create no PR; exit non-zero. (AC: `refuses-when-no-commits-ahead`)
- The user asks to create the PR before the reviewer gate releases → refuse; the PR is available only after `pull_request.pre_dispatch` releases `Approved`.
## Pre-Flight
Pre-flight refusals exit immediately, write nothing, create no PR, and dispatch no reviewer and no delegate. The skill operates on the **current branch only** and creates **at most one** pull request per invocation — it never accepts, batches, or coordinates multiple branches or stacked PRs. (AC: `rejects-default-branch`)
### Machine gates
These are hard gates the skill enforces itself, before any reviewer or delegate is dispatched.
1. **Default-branch guard.** Resolve the repository's default branch and the current branch. Refuse when they are the same — there is no PR from the default branch into itself. Print the reason and recommend creating a feature branch. (AC: `rejects-default-branch`)
2. **Commits-ahead guard.** Refuse when the current branch has zero commits ahead of the base branch (`git rev-list --count <base>..HEAD` is `0`) — there is nothing to open a PR for. Print the reason; create no PR. (AC: `refuses-when-no-commits-ahead`)
## Checklist
Create a task for each and complete in order:
1. **Pre-flight machine gates** (Pre-Flight steps 1–2): default-branch guard, then commits-ahead guard. Any refusal exits immediately.
2. **Reviewer gate** (`## Reviewer Gate`): fire `pull_request.pre_dispatch`, load and run `gates.pull_request.pre_dispatch` reviewers (AND-composed, including the `type: deterministic` verify reviewer). Halt on `Issues Found`; proceed only on release.
3. **PR creation** (`## PR Creation`): if `pull_request.delegate` is configured, dispatch it once; otherwise run the built-in `git push` + `gh pr create` path. Derive and confirm the title/body first.
4. **Emit** (`## Lifecycle Event`): on successful creation, apply publication policy and emit `pull_request.created` exactly once.
## Reviewer Gate
After the pre-flight machine gates pass, the skill fires the `pull_request.pre_dispatch` gate-point event and evaluates the reviewer gate keyed on it — `gates.pull_request.pre_dispatch` in `specscore.yaml` — via the shared reviewer-gates [loader](../shared/reviewer-gates/loader.md) and [runner](../shared/reviewer-gates/runner.md). The skill carries **no** hardcoded baseline reviewer; the reviewer list comes exclusively from the gate config.
1. **Fire and load.** Fire `pull_request.pre_dispatch` (single-fire per run; see [events.md](../shared/events.md)). Load and validate `gates.pull_request.pre_dispatch.reviewers` via the loader with event key `pull_request.pre_dispatch`. If the gate is unconfigured or invalid, the loader refuses per its contract — surface its error verbatim and halt; create no PR.
2. **Run.** Dispatch the validated reviewer list via the runner: serial, in declared list order, AND-composed. The gate releases only when **every** entry returns `Approved`. (AC: `gate-releases-only-on-all-approved`)
3. **Verify reviewer.** The project verify check (tests, coverage) is expressed as an existing `type: deterministic` reviewer whose `run:` command's exit code is the verdict (zero → `Approved`; non-zero → `Issues Found` with diagnostics captured as `Blocker`(s)). The skill introduces **no new reviewer type** — it uses only the types reviewer-gates already defines (`ai`, `human`, `deterministic`, `auto-approve`). The configured `run:` command must be read-only with respect to `spec/`; side effects outside `spec/` (e.g. a `cover.out` at the repo root) are conformant.
4. **Outcome.** On release (`Approved`), proceed to PR creation. On `Issues Found`, halt: surface the failing reviewer's `Blocker` findings, run no `git push` or `gh pr create`, and open no PR. A non-zero verify command therefore blocks PR creation before any push runs. (AC: `verify-gate-blocks-pr-below-threshold`)
## PR Creation
When the reviewer gate releases, the skill creates exactly **one** pull request. It dispatches once and reacts to a single outcome — it never sequences, retries, or orchestrates.
### Title and body
Before creating the PR, derive a draft title and body from the current branch's commits — title from the latest/squash subject; body summarizing the commits — and present them to the user for confirmation or edit. Create the PR with the **confirmed** title and body. (AC: `derives-and-confirms-title-body`)
### Built-in path (default)
When **no** `pull_request.delegate` is configured, the skill creates the PR itself:
1. Push the current branch to its remote (`git push -u origin <branch>`).
2. Open exactly one **ready-for-review** (non-draft) pull request whose base is the repository's default branch, using the confirmed title/body (`gh pr create --base <default-branch> --head <branch> --title … --body …`).
It creates the PR exactly once and interposes no orchestration. (AC: `creates-ready-pr-against-default-branch`)
### Config schema (`pull_request:` in `specscore.yaml`)
```yaml
pull_request:
delegate:
skill: <skill-name> # the PR-creation skill to dispatch (e.g. commit-push-pr)
args: <string> # opaque args handed to the delegate verbatim
```
`delegate.skill` and `delegate.args` are the **only** recognized fields. The `pull_request:` schema MUST NOT grow any field expressing sequencing, retry, merge, or multi-PR behavior.
### Delegate override
When `pull_request.delegate` is configured, the skill dispatches that single delegate skill **instead of** the built-in path, passing `delegate.args`. It invokes the delegate **exactly once** and does not run the built-in `git push` / `gh pr create` path, sequence multiple delegates, or retry a failed delegate. (AC: `dispatches-configured-delegate`)
## Lifecycle Event
Runs **only** on successful PR creation — the built-in path completing, or a configured delegate returning explicit success.
1. **Publication + event.** Build the checkpoint manifest, apply [publication-policy.md](../shared/publication-policy.md) for the `pull_request.created` checkpoint, then emit `pull_request.created` **exactly once** with `publication_result` per [events.md](../shared/events.md). The event carries the created PR's identifier (URL/number) and the base/head branches. If creation fails, emit no event. (AC: `emits-created-once`)
## Architectural Boundary
This boundary is load-bearing and applies across the whole skill: **pull-request gates, creates one PR, and records — it never orchestrates.** Concretely, the skill MUST NOT:
- merge, auto-merge, or approve the PR;
- deploy, build, or release;
- stack, batch, or coordinate multiple PRs in one run;
- retry a failed delegate, or interpose orchestration between itself and the delegate.
Those belong to other skills (`ship`, the merge step) or to the delegate, never to this skill. The `pull_request:` config block MUST expose **only** `delegate.skill` and `delegate.args`. (AC: `bars-orchestration`)
## Red Flags
- Running `git push` or `gh pr create` before the `pull_request.pre_dispatch` gate releases (`Approved`).
- Carrying a hardcoded reviewer instead of loading `gates.pull_request.pre_dispatch`.
- Introducing a new reviewer type for the verify gate instead of the existing `type: deterministic`.
- Opening the PR as a draft, or against a base other than the repository's default branch, without explicit configuration.
- Creating the PR without first confirming the derived title/body with the user.
- Merging, auto-merging, deploying, stacking multiple PRs, or retrying a delegate.
- Adding any `pull_request:` config field beyond `delegate.skill` / `delegate.args`.
- Emitting `pull_request.created` when creation did not succeed.
## References
- [Feature: Pull Request Skill](../../spec/features/skills/pull-request/README.md) — the SpecScore Feature this skill implements.
- [ship SKILL.md](../ship/SKILL.md) — the sibling gate-and-dispatch skill whose structure this mirrors.
- [reviewer-gates/loader.md](../shared/reviewer-gates/loader.md), [reviewer-gates/runner.md](../shared/reviewer-gates/runner.md) — load + run the `gates.pull_request.pre_dispatch` reviewer list.
- [events.md](../shared/events.md) — the `pull_request.pre_dispatch` and `pull_request.created` event payloads this skill fires/emits.From specscore/specstudio-skills, MIT.
More from specscore/specstudio-skills
- 0.479score
plan
specscore
Turns an approved SpecScore Feature or Idea into a lint-clean Plan artifact at spec/plans/<slug>.md — an ordered list of tasks where each task references one…
SkillCFreshness: CClaude Code +9 - 0.479score
specify
specscore
Turns an approved SpecScore Idea (or a clear buildable intent) into a SpecScore Feature with requirements and Given/When/Then acceptance criteria at…
SkillCFreshness: CClaude Code +9 - 0.479score
consilium
specscore
Drains captured sidekick (sideline-idea) seeds and produces deterministic verdicts via a 5-stage pipeline: CLI gather → researcher agent → 9-role parallel…
SkillCFreshness: CClaude Code +9 - 0.479score
ideate
specscore
Refines raw ideas into SpecScore Idea artifacts through structured divergent and convergent thinking.
SkillCFreshness: CClaude Code +9 - 0.474score
recap
specscore
Consumes an approved SpecScore Feature plus the latest `specstudio:verify` report at HEAD and produces a per-AC drift report at…
SkillCFreshness: CClaude Code +9 - 0.474score
relocate-idea
specscore
Thin wrapper over the `specscore idea relocate` CLI verb.
SkillCFreshness: CClaude Code +9 - 0.474score
score
specscore
Manually re-invokes the configured reviewer-gates dispatch pipeline against one or more SpecScore artifacts (Ideas, Features, Plans), outside the…
SkillCFreshness: CClaude Code +9 - 0.474score
ship
specscore
Terminal skill of the SpecStudio pipeline.
SkillCFreshness: CClaude Code +9 - 0.474score
sidekick
specscore
Captures a sideline idea as a lint-clean seed at spec/ideas/seeds/<slug>.md without derailing the host task.
SkillCFreshness: CClaude Code +9 - 0.474score
verify
specscore
Consumes an approved SpecScore Feature and produces a machine-checkable per-AC verdict report at spec/features/<feature-slug>/_verify/<sha>.md.
SkillCFreshness: CClaude Code +9 - 0.474score
close
specscore
Retires a single SpecScore artifact — an Idea, Feature, or sidekick seed — by driving the appropriate `specscore <kind> change-status` CLI verb with an…
SkillCFreshness: CClaude Code +9 - 0.474score
implement
specscore
Turns an approved SpecScore Plan into focused, AC-traceable source-code changes by dispatching one subagent per task in parallel batches computed from the…
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 7
- Last commit (this folder)
- Jun 4, 2026 (4 months ago)
- Last release
- Jun 6, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/specscore/specstudio-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from specscore
- 0.479score
specify
specscore
Turns an approved SpecScore Idea (or a clear buildable intent) into a SpecScore Feature with requirements and Given/When/Then acceptance criteria at…
SkillCFreshness: CClaude Code +9 - 0.479score
consilium
specscore
Drains captured sidekick (sideline-idea) seeds and produces deterministic verdicts via a 5-stage pipeline: CLI gather → researcher agent → 9-role parallel…
SkillCFreshness: CClaude Code +9 - 0.479score
ideate
specscore
Refines raw ideas into SpecScore Idea artifacts through structured divergent and convergent thinking.
SkillCFreshness: CClaude Code +9 - 0.479score
plan
specscore
Turns an approved SpecScore Feature or Idea into a lint-clean Plan artifact at spec/plans/<slug>.md — an ordered list of tasks where each task references one…
SkillCFreshness: CClaude Code +9 - 0.474score
init
specscore
Bootstraps a SpecScore-managed project in one wizard-driven step.
SkillCFreshness: CClaude Code +9 - 0.474score
implement
specscore
Turns an approved SpecScore Plan into focused, AC-traceable source-code changes by dispatching one subagent per task in parallel batches computed from the…
SkillCFreshness: CClaude Code +9
Cite this page
pull-request skill. Agent Mart. https://agentmart.dev/skills/specscore-pull-request (last updated 2026-10-24)