Create a pull request in the warp repository for the current branch. Use when the user mentions opening a PR, creating a pull request, submitting changes for review, or preparing code for merge.
66
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/create-pr/SKILL.mdThis guide covers best practices for creating pull requests in the warp repository, including merging master, running presubmit checks, linking Linear tasks, ensuring appropriate test coverage, and structuring your PR for effective review.
write-pr-description - Write the PR body itself: template sections, prose, and reviewer guidancefix-errors - Fix presubmit failures (formatting, linting, tests) before opening PRwarp-integration-test - Add or update integration coverage for user-visible flows, regressions, and P0 use casesadd-feature-flag - Gate changes behind feature flagsAlways merge master into your feature branch before starting the review process.
git fetch origin
git merge origin/masterResolve any merge conflicts locally before opening the PR.
If the PR includes code changes, run the relevant presubmit checks before opening or updating it:
./script/presubmit./script/presubmit runs:
cargo fmt - Code formattingcargo clippy - Linting with all warnings as errorscargo fmt or cargo clippy just to open or update the PR.If presubmit fails for a code-changing PR, use the fix-errors skill to resolve issues.
You must run cargo fmt and cargo clippy before:
Before creating a PR, review what changes you're about to submit:
# View commits in your branch (comparing against base branch)
git --no-pager log <base-branch>..HEAD --oneline
# View file statistics for changes
git --no-pager diff <base-branch>...HEAD --stat
# View full diff
git --no-pager diff <base-branch>...HEADThis helps you:
When possible, PRs should be associated with a Linear task. Use the Linear MCP tool (if available) to find corresponding issues.
Branch naming convention:
Remote branches should be prefixed with your name (e.g., zheng/feature, alice/fix-bug).
How to link PRs to Linear:
Include the issue ID in the PR title (e.g., [WARP-1234] Add new feature). Do this before creating the PR for automatic linking.
Use the PR template at .github/pull_request_template.md when opening PRs.
Add changelog entries when appropriate using the format at the bottom of the PR template. Some examples:
CLI workflow:
Check if PR exists for current branch:
gh pr view --json number,urlExit code 0 if PR exists, 1 if not.
Create a new PR:
# With title and body
gh pr create --title "Title" --body "Description" --draft
# Auto-fill from commits
gh pr create --fill --draft
# Use PR template file
gh pr create --body-file .github/pull_request_template.md --title "Title" --draftKey flags: --draft / -d, --fill / -f, --body-file / -F, --web / -w
Update an existing PR:
gh pr edit --title "New title" --body "New body"
gh pr edit --add-reviewer username --add-label bugMark PR ready for review:
gh pr readyWhen committing changes, include attribution as a trailer at the end of the commit message only — never in the PR description — and never add a second Warp/Oz co-author trailer if the commit already has one:
Co-Authored-By: Warp Agent <agent@warp.dev>All bug fixes should be accompanied by a regression test. This helps prevent re-breaking something that was already broken once.
The test should:
Code with non-trivial logic should have unit tests to validate functionality:
Examples of what needs unit tests:
SumTree)Not required for:
Follow the repository's local testing conventions for guidance on writing unit tests.
All UI components (implementations of View) should have a simple unit test to validate that they can be laid out without a panic.
This provides high-level coverage over rendering "safety" (though not "correctness"):
#[test]
fn test_component_can_layout() {
use warpui::App;
use warp::test_util::{terminal::initialize_app_for_terminal_view, add_window_with_terminal};
App::test((), |mut app| async move {
initialize_app_for_terminal_view(&mut app);
let term = add_window_with_terminal(&mut app, None);
// Render the component - should not panic
term.update(&mut app, |view, ctx| {
// Create and layout your component
});
})
}If the PR changes a user-visible flow, fixes an end-to-end regression, or otherwise looks like it would benefit from integration coverage, use the ask_user_question tool before creating or updating the PR to ask whether the user wants an integration test added as part of the work.
Prefer a direct choice such as:
Yes, add an integration test before creating the PRNo, continue without an integration testIf the user chooses to add one, use the warp-integration-test skill.
All "P0 use cases" require an integration test that covers the behavior/flow in question.
A "P0 use case" is defined as: Any behavior of the application that, if broken, warrants an out-of-band release.
Integration tests should:
integration/ directoryUse the warp-integration-test skill for implementation details, test registration steps, and validation workflow.
Use the write-pr-description skill for the body itself. It covers following the
repository's template, the prose baseline, and when to add a reading order and focus
areas for the reviewer.
cargo fmt/cargo clippy (and other relevant checks); for documentation-only changes, this is not required.add-feature-flag skill)b811c24
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.