quick-pr
Split a minor change from the current work into a separate worktree and open a PR without interrupting your flow. Requires Claude Code (uses EnterWorktree, ExitWorktree, AskUserQuestion).
What this skill does
# Quick PR Split an unrelated minor change (convention fix, typo, config tweak) from the current working tree into an independent PR — without leaving the current branch. This is a Claude Code skill. It requires Claude Code built-in tools: `EnterWorktree`, `ExitWorktree`, and `AskUserQuestion`. ## Use this skill when - A small fix (typo, lint, config) is mixed into a larger feature branch - The user wants to ship a trivial change immediately without polluting the current PR - The user says "quick PR", "split this out", or "ship this separately" ## Do not use this skill when - The change is part of the current feature work - The user only wants a PR description (use `/write-pr` instead) - The change requires review or testing beyond a simple visual check ## Input ```text $ARGUMENTS ``` **Argument interpretation:** - File path (e.g., `src/config.py`) — extract the current diff for that file and apply it in the worktree - Description text (e.g., `"fix typo in README"`) — make the edit directly in the worktree - Empty — ask the user what to split out ## Tools Fetch these tools via `ToolSearch` before use: | Purpose | Tool | |---------|------| | Enter isolated worktree | `EnterWorktree` | | Exit/remove worktree | `ExitWorktree` | | Ask the user | `AskUserQuestion` | ## Procedure ### Step 1: Determine Change Scope **File path arg:** Run `git diff HEAD -- <file>`, show the diff. **Description arg:** Propose which files to modify and how. **Empty arg:** Ask what to split out. → **Use `AskUserQuestion` to confirm the scope before continuing.** ### Step 2: Choose Branch Name and Commit Message Check the project's commit style: `git log --oneline -10`. Propose up to 5 candidates for each: - **Branch:** kebab-case, prefix `fix/` `chore/` `docs/` `feat/` - **Commit:** match dominant pattern (Conventional Commits, ticket prefix, etc.); default to Conventional Commits if unclear → **Use `AskUserQuestion` with the numbered options. User picks or writes their own.** ### Step 3: Choose Base Branch, Create Worktree, Apply Changes ```bash git fetch origin ``` Detect the default branch as the recommended base: ```bash git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null ``` Fallback: check which of `main`, `master`, `develop` exists. Gather recent remote branches as additional candidates: ```bash git for-each-ref --sort=-committerdate refs/remotes/ \ --format='%(refname:short)' | grep -v HEAD | head -5 ``` → **Use `AskUserQuestion` to pick the base branch.** Present the detected default as the recommended option, followed by the recent branches. User can write their own. This base is reused as the PR target in Step 4. Use `EnterWorktree` to create a worktree based on the chosen base branch. Then rename the branch: ```bash git branch -m <chosen-branch-name> ``` **File-based mode:** Before entering the worktree, note the original worktree path. After entering, copy the changed file from the original path: ```bash cp <original-worktree-path>/<file> <current-worktree-path>/<file> ``` **Description-based mode:** Make the edit directly in the worktree. ### Step 4: Commit, Push, Create PR ```bash git add <changed-files> git commit -m "<chosen-commit-message>" ``` → **Use `AskUserQuestion` to confirm push.** On approval: ```bash git push -u origin <branch-name> ``` Build the PR body inline (do not delegate to another skill): 1. Check templates in parallel: - `.github/PULL_REQUEST_TEMPLATE.md` - `.github/pull_request_template.md` - `docs/pull_request_template.md` - `PULL_REQUEST_TEMPLATE.md` - `.github/PULL_REQUEST_TEMPLATE/` directory 2. **Template exists:** preserve structure exactly. Fill sections from the diff. Leave unfillable sections (Screenshots, Related Issues) with their original placeholders. 3. **No template:** ```markdown ## Summary <what and why — 1-3 sentences> ## Changes <bullet list of key changes> ``` 4. PR title: match `gh pr list --state merged --limit 5 --json title 2>/dev/null`. Fallback to `git log --oneline -10`. Default to Conventional Commits if unclear. → **Use `AskUserQuestion` with the draft title + body + target branch (defaults to the base from Step 3). Do not run `gh pr create` until approved.** ```bash gh pr create --base <target-branch> --title "<title>" --body "<body>" ``` ### Step 5: Confirm and Clean Up Show `PR created: <URL>`. → **Use `AskUserQuestion`: "Remove the worktree?"** - **Yes** → `ExitWorktree` with `action: "remove"`, `discard_changes: true` (safe — the commit is already on origin from Step 4) - **No** → `ExitWorktree` with `action: "keep"`
Related in productivity
decision-board
IncludedRender an interactive HTML board for the user to pick among multiple comparable options side-by-side at once — engineering trade-offs, copy audits, action-item triage, architecture decisions, policy calls. Returns the picks (and optional hold/note flags) as a JSON file the agent can apply.
notion-api
IncludedNotion API for workspace automation including databases, pages, blocks, query/filter syntax, and integration patterns
obsidian
IncludedLocal-first knowledge management with markdown vaults, bidirectional linking, plugin ecosystem, and flexible sync strategies
time-tracking
IncludedTime tracking integration patterns with RescueTime and Toggl APIs for automated time entry, reporting, analytics, and project/task attribution
todoist-api
IncludedTask management API integration for Todoist with projects, tasks, labels, filters, webhooks, and Python SDK usage
trello-api
IncludedKanban board automation with Trello API including boards, lists, cards, members, webhooks, power-ups, and Python SDK (py-trello) integration