branch-pr
>
Works with
--- name: branch-pr description: > license: Apache-2.0 --- ## When to Use Use this skill when: - Creating a pull request for any change - Preparing a branch for submission - Helping a contributor open a PR --- ## Critical Rules 1. **Every PR MUST link an approved issue** — no exceptions 2. **Every PR MUST have exactly one `type:*` label** 3. **Automated checks must pass** before merge is possible 4. **Blank PRs without issue linkage will be blocked** by GitHub Actions --- ## Workflow ``` 1. Verify issue has `status:approved` label 2. Create branch: type/description (see Branch Naming below) 3. Implement changes with conventional commits 4. Run shellcheck on modified scripts 5. Open PR using the template 6. Add exactly one type:* label 7. Wait for automated checks to pass ``` --- ## Branch Naming Branch names MUST match this regex: ``` ^(feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)\/[a-z0-9._-]+$ ``` **Format:** `type/description` — lowercase, no spaces, only `a-z0-9._-` in description. | Type | Branch pattern | Example | |------|---------------|---------| | Feature | `feat/<description>` | `feat/user-login` | | Bug fix | `fix/<description>` | `fix/zsh-glob-error` | | Chore | `chore/<description>` | `chore/update-ci-actions` | | Docs | `docs/<description>` | `docs/installation-guide` | | Style | `style/<description>` | `style/format-scripts` | | Refactor | `refactor/<description>` | `refactor/extract-shared-logic` | | Performance | `perf/<description>` | `perf/reduce-startup-time` | | Test | `test/<description>` | `test/add-setup-coverage` | | Build | `build/<description>` | `build/update-shellcheck` | | CI | `ci/<description>` | `ci/add-branch-validation` | | Revert | `revert/<description>` | `revert/broken-setup-change` | --- ## PR Body Format The PR template is at `.github/PULL_REQUEST_TEMPLATE.md`. Every PR body MUST contain: ### 1. Linked Issue (REQUIRED) ```markdown Closes #<issue-number> ``` Valid keywords: `Closes #N`, `Fixes #N`, `Resolves #N` (case insensitive). The linked issue MUST have the `status:approved` label. ### 2. PR Type (REQUIRED) Check exactly ONE in the template and add the matching label: | Checkbox | Label to add | |----------|-------------| | Bug fix | `type:bug` | | New feature | `type:feature` | | Documentation only | `type:docs` | | Code refactoring | `type:refactor` | | Maintenance/tooling | `type:chore` | | Breaking change | `type:breaking-change` | ### 3. Summary 1-3 bullet points of what the PR does. ### 4. Changes Table ```markdown | File | Change | |------|--------| | `path/to/file` | What changed | ``` ### 5. Test Plan ```markdown - [x] Scripts run without errors: `shellcheck scripts/*.sh` - [x] Manually tested the affected functionality - [x] Skills load correctly in target agent ``` ### 6. Contributor Checklist All boxes must be checked: - Linked an approved issue - Added exactly one `type:*` label - Ran shellcheck on modified scripts - Skills tested in at least one agent - Docs updated if behavior changed - Conventional commit format - No `Co-Authored-By` trailers --- ## Automated Checks (all must pass) | Check | Job name | What it verifies | |-------|----------|-----------------| | PR Validation | `Check Issue Reference` | Body contains `Closes/Fixes/Resolves #N` | | PR Validation | `Check Issue Has status:approved` | Linked issue has `status:approved` | | PR Validation | `Check PR Has type:* Label` | PR has exactly one `type:*` label | | CI | `Shellcheck` | Shell scripts pass `shellcheck` | --- ## Conventional Commits Commit messages MUST match this regex: ``` ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([a-z0-9\._-]+\))?!?: .+ ``` **Format:** `type(scope): description` or `type: description` - `type` — required, one of: `build`, `chore`, `ci`, `docs`, `feat`, `fix`, `perf`, `refactor`, `revert`, `style`, `test` - `(scope)` — optional, lowercase with `a-z0-9._-` - `!` — optional, indicates breaking change - `description` — required, starts after `: ` Type-to-label mapping: | Commit type | PR label | |-------------|----------| | `feat` | `type:feature` | | `fix` | `type:bug` | | `docs` | `type:docs` | | `refactor` | `type:refactor` | | `chore` | `type:chore` | | `style` | `type:chore` | | `perf` | `type:feature` | | `test` | `type:chore` | | `build` | `type:chore` | | `ci` | `type:chore` | | `revert` | `type:bug` | | `feat!` / `fix!` | `type:breaking-change` | Examples: ``` feat(scripts): add Codex support to setup.sh fix(skills): correct topic key format in sdd-apply docs(readme): update multi-model configuration guide refactor(skills): extract shared persistence logic chore(ci): add shellcheck to PR validation workflow perf(scripts): reduce setup.sh execution time style(skills): fix markdown formatting test(scripts): add setup.sh integration tests ci(workflows): add branch name validation revert: undo broken setup change feat!: redesign skill loading system ``` --- ## Commands ```bash # Create branch git checkout -b feat/my-feature main # Run shellcheck before pushing shellcheck scripts/*.sh # Push and create PR git push -u origin feat/my-feature gh pr create --title "feat(scope): description" --body "Closes #N" # Add type label to PR gh pr edit <pr-number> --add-label "type:feature" ```
More Git Workflows skills
git-commit
github/awesome-copilot
Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping
git-workflow-and-versioning
addyosmani/agent-skills
Structures git workflow practices. Use when making any code change. Use when committing, branching, resolving conflicts, or when you need to organize work across multiple parallel streams. Use when cutting a release, choosing a semantic version bump, tagging, or writing a changelog.
resolve-merge-conflicts
warpdotdev/common-skills
Resolve Git merge conflicts by extracting only unresolved paths, conflict hunks, and compact diffs instead of loading whole files into context. Use when a merge, rebase, cherry-pick, or stash pop stops on conflicts, when `git status` shows unmerged paths, or when files contain conflict markers.

