Creates a draft pull request on GitHub with proper labels, branch naming, and description formatting. Use when changes are ready to be submitted as a PR to the streamlit/streamlit repository.
Create a draft PR on GitHub with appropriate labels after user approval.
Critical constraints:
gh pr createAlways ask the user first:
How would you like to proceed with creating the PR?
- Already Ready: I have a feature branch with all changes committed and pushed
- Automated: Handle branch creation, committing, and pushing automatically
Wait for user response before proceeding.
Validate readiness:
git branch --show-current
git status
git branch -r | grep $(git branch --show-current)
Confirm with user, then proceed to Step 3.
Assumes user has already staged changes with git add.
git status
git checkout develop
git checkout -b {type}/{descriptive-name}
git commit -m "{imperative-verb} {what} {where}"
git push --set-upstream origin $(git branch --show-current)
Branch naming: {type}/{brief-description} in kebab-case.
Types: feature, fix, refactor, chore, docs.
Examples: feature/add-height-plotly-charts, fix/dataframe-memory-leak-scrolling.
Commit message: <imperative verb> <what> <where>, ≤50 chars, no period.
Examples: Add height parameter to plotly charts, Fix memory leak in dataframe scrolling.
All PRs require these labels:
| Category | Options |
|---|---|
| Impact | impact:users (affects user behavior) OR impact:internal (no user behavior change) |
| Change type | change:feature, change:bugfix, change:chore, change:refactor, change:docs, change:spec, change:other |
Note: PRs labeled change:spec (for spec/design documents only) are exempt from the impact:* requirement. Do not use change:spec for PRs with code changes.
Format: [type] Description of change, ≤63 chars (fits squash-merge commit subjects).
Examples: [feature] Add height parameter to plotly charts, [fix] Extra padding on button.
Read .github/pull_request_template.md for the required sections, then fill them in.
Writing rules:
Good:
Adds
heightparameter tost.plotly_chart()usingHeighttype system.
- Deprecates
use_container_height(removed after 2025-12-31)
Bad (lists every change):
- Added
heightparameter to signature- Updated layout config dataclass
- Added validation for height values
- Added unit tests
Testing section — detect from changed files:
| Pattern | Test type |
|---|---|
lib/tests/**/*.py | Python unit tests |
frontend/**/*.test.{ts,tsx} | Frontend unit tests |
e2e_playwright/**/*_test.py | E2E tests |
Check the matching boxes in the PR template. If no test files changed, explain why. Leave "manual testing" unchecked (user fills in).
Write complete PR details to work-tmp/pr_description.md:
---