Skip to content
Development
Skill

/new-branch-and-pr

Use when a human explicitly asks to ship work through a clean branch and pull request. Don''t use for force-pushing, reusing conflicting branches, or widening the change scope.

From plugin
odin-claude-plugin
40200 skills

Claude Code

$ npx -y skills add OutlineDriven/odin-claude-plugin --skill new-branch-and-pr --agent claude-code

SKILL.md

new-branch-and-pr.SKILL.md
name: new-branch-and-pr
description: 'Use when a human explicitly asks to ship work through a clean branch and pull request. Don''t use for force-pushing, reusing conflicting branches, or widening the change scope.'
disable-model-invocation: true

New branch and PR

Contract

| Field | Bound contract | |---|---| | Trigger | A human explicitly asks to ship work through a clean branch and pull request. | | Authority | Remote: pushes one branch and opens one pull request; requires explicit human invocation. Creates a local branch and commits first; preview the remote, base, head branch, included changes, and publishing consequence before the remote mutation. | | Side effect | Creates one focused branch, commits its intended changes, pushes that branch, and opens one pull request without mutating unrelated work or other remote branches. | | Done | The intended changes are committed on the focused branch and the remote operation is confirmed by a pull-request URL. |

Inputs

Required: the repository containing the work, the intended changes to publish, and the pull-request base branch. The target remote must be supplied or unambiguously established by repository configuration. A branch name, commit message, pull-request title, and pull-request body are optional; when omitted, derive them only from the inspected change and repository state. Publishing credentials must already be available in the execution environment; never request, print, copy, or persist credential values.

Procedure

1. Inspect the repository status, current branch, configured remotes, intended base, and diff. Stop if the repository, base, target remote, or intended change set is missing or ambiguous. Done when: the repository root, current branch, remote list, base branch, and diff are all read and recorded, or a missing or ambiguous input is named and the stop is reported. 2. Bound the publication to the intended changes. Exclude unrelated tracked, staged, and untracked work; stop if separating it would overwrite or discard any work. Done when: the bounded change set contains only the intended changes, and no unrelated tracked, staged, or untracked work is included, or an unsafe separation is named and the stop is reported. 3. Choose the supplied branch name or derive a concise name from the bounded change. Confirm that creating and publishing it will not overwrite an existing local or remote branch; stop on a conflicting branch rather than force-update it. Done when: a branch name is chosen that does not match any existing local or remote branch, or a conflict is named and the stop is reported. 4. Create the new branch from the intended base while preserving the bounded changes. Stage only those changes, review the staged diff, and stop if it contains secrets, generated debris, unrelated files, or changes outside the bounded scope. Done when: the new branch is created from the intended base, the staged diff contains exactly the bounded changes, and no secrets, debris, or out-of-scope files are present, or a contamination finding is named and the stop is reported. 5. Inspect the repository manifest and continuous-integration configuration for commands that directly exercise the included files. Run the narrowest deterministic command that covers the bounded change from the repository root. Record the exact command, exit result, and relevant output; if no covering command exists or the required runtime is unavailable, record that fact and do not claim the check ran. Done when: the exact check command and its exit result are recorded, or the absence of a covering command or runtime is recorded as a fact rather than assumed. 6. Commit the staged change with the supplied message or one derived from the reviewed diff. Confirm the commit contains exactly the bounded files and no unrelated changes. Done when: the commit is created and `git show --stat <commit>` lists exactly the bounded files and no others. 7. Before any remote mutation, present a preview naming the remote, base branch, new head branch, commit, included files, pull-request title, and the consequences that the branch will be pushed and a pull request will be created. Proceed only because this skill was explicitly invoked by a human; if the requested target differs from the validated preview, stop and report the mismatch. Done when: the preview is presented to the user and the user confirms it matches their intent, or a mismatch between the requested target and the preview is named and the stop is reported. 8. Push only the new branch without force, then open one pull request from that branch to the validated base. Use supplied pull-request text or derive factual text from the commit and checks actually observed; never invent test results, issue links, reviewers, or deployment claims. Done when: the branch is pushed to the remote and one pull request is opened returning a URL, or the push or PR creation failed and the error is recorded. 9. Read the created pull request's remote response and confirm its base, head, and URL. Return the branch, commit, push result, pull-request URL, and check evidence. Done when: the remote PR response confirms the base branch, head branch, and URL match what was pushed, and all five values are returned, or a mismatch is named and the stop is reported.

Failure and recovery

  • Invalid or ambiguous repository state: make no branch, commit, or remote mutation; return `blocked` with the unresolved repository, base, remote, or scope fact.
  • Unsafe scope or branch conflict: do not discard work, stage unrelated files, reuse a conflicting remote branch, force-push, or widen scope; return `blocked` with the conflicting files or branch.
  • Check or commit failure: do not push or open a pull request. Preserve the local branch and working state for inspection, and return `blocked` with the failing command and observed error.
  • Push failure: do not open a pull request or rewrite remote history. Preserve the local branch and c
Read more
@outlinedriven
Ships withodin-claude-plugin

Formerly the ODIN Claude Plugin. The repository URL is unchanged. Outline-Driven Development, nicknamed ODIN, is a highly opinionated code-agent skill library: principles-first engineering, surgical editing, and workflow automation, published as installable

Stars on GitHub

Momentum

stars in total
40
Star history of OutlineDriven/odin-claude-plugin on GitHub, a chart by star-history.com

Other skills on odin-claude-plugin.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about new-branch-and-pr.

Which coding agents can use new-branch-and-pr?
new-branch-and-pr installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.