Skip to main content

finalizing-pr

Finalizes branch changes for merging by simplifying code, running checks, reviewing changes, and creating a PR if needed. Use when ready to merge changes into the target branch.

Source facts

Repository
streamlit/streamlit
Last source activity
August 31, 2026 at 15:03
Detected SKILL.md language
English
Stars
45,942
Forks
4,419

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
finalizing-pr
description
Finalizes branch changes for merging by simplifying code, running checks, reviewing changes, and creating a PR if needed. Use when ready to merge changes into the target branch.
# Finalizing PR Prepares the current branch for merge by running quality checks, simplifying code, and creating a PR if one doesn't exist. **Be fully autonomous** — Do NOT stop or pause to ask for confirmation. Go from current state to merge-ready PR without human intervention. Note any open questions or ambiguities in a PR conversation comment (under the Conversation tab) rather than blocking on them. ## Workflow Follow these steps in order. **Run all subagents in foreground** (not background) unless otherwise specified—wait for each to complete before proceeding. **Subagent model**: use the same model as this session on every launch (`model: inherit` / omit any model override). Do not switch to a different or faster model unless the user explicitly requests it. > **Note:** For small changes (documentation tweaks, test-only tweaks, one-liners, or other mini-changes), you can skip steps 1, 2, 3, 6, 7, and 8. ### 1. Build and install Run `make all` in a subagent to ensure the build and installation are up-to-date. Wait for completion before proceeding. ```bash make all ``` ### 2. Update internal docs Run the `/updating-internal-docs` skill in a background subagent to auto-fix internal documentation issues. Instruct it to apply all recommended fixes to internal docs issues related to the local changes. ### 3. Simplify changes Run the `simplifying-local-changes` subagent to clean up and simplify the code changes. Wait for completion before proceeding. ### 4. Run autofix Run autofix in a subagent to fix formatting and linting issues. Wait for completion before proceeding. ```bash make autofix ``` ### 5. Run checks (first pass) Run the /checking-changes skill in a subagent (uses `make check`) to validate the changes. Wait for completion, then fix any issues found before proceeding. Don't run other checks besides `make check` in this step. ### 6. Review changes Run the `reviewing-local-changes` subagent to review the changes. Wait for completion and read the review output. ### 7. Address review feedback Review the recommendations from step 6. For each recommendation: - If valid and improves code quality: implement the change - If not applicable or would over-engineer: skip with brief reasoning ### 8. Run checks (second pass) Run the /checking-changes skill in a subagent with `E2E_CHECK=true make check` to also run changed e2e tests. Wait for completion, then fix any issues found before proceeding. Snapshot mismatches can be ignored (they require manual updates). ### 9. Create or update PR > **Note:** If currently on `develop`, create a new branch first following the naming conventions in `wiki/pull-requests.md`. Check if a PR exists for the current branch: ```bash gh pr view --json number,title,url ``` **If no PR exists**, create one following the guidelines in `wiki/pull-requests.md` (please read!) and the title/description guidance in the `/reviewing-pr-description` skill. Add appropriate labels and fill in the body based on `.github/pull_request_template.md`. **Link related issues:** Add `- Closes #12345` to the PR description for any known GitHub issues this PR resolves. **Required 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 Impact label requirements. ```bash # Push branch to origin first (required for gh pr create in non-interactive mode) git push -u origin HEAD # Create the PR gh pr create --base develop --title "[type] Description" --body "$(cat <<'EOF' ## Describe your changes - Change 1 - Change 2 ## GitHub Issue Link (if applicable) - Closes #12345 ## Testing Plan - [x] Unit Tests (JS and/or Python) EOF )" --label "impact:users,change:feature" ``` **If PR exists**, check if description needs updating based on current changes. ### 10. Upload intermediate files If relevant intermediate files exist (specs, plans, implementation notes in `work-tmp/` or untracked in `specs/`), run the `/sharing-pr-agent-artifacts` skill to push them to the wiki and comment on the PR with links. ### 11. AI review and fix loop Run the AI review and fix loop up to 5 times. After each review, always run `fixing-pr` so it can wait for CI and address comments, then exit if that review was approved: ``` for iteration 1 to 5: 1. Trigger AI review by applying the "ai-review" label 2. Run the `fixing-pr` subagent in foreground to wait for CI, fix failures, and address review comments 3. Check the latest AI review verdict 4. If it is "approved" → exit loop ``` **Triggering AI review:** ```bash gh pr edit --add-label "ai-review" ``` **Checking AI review verdict:** The AI review posts results as a PR review from the `github-actions` bot. These contain a hidden marker: ```html <!-- streamlit-ai-review run_id="..." timestamp="..." --> ``` To find the latest AI review and extract the verdict: ```bash PR_NUM=$(gh pr view --json number -q '.number') # Get the verdict from the latest AI review gh api --paginate "repos/streamlit/streamlit/pulls/${PR_NUM}/reviews" \ | jq -s '[.[][] | select(.user.login == "github-actions[bot]" and (.body | contains("<!-- streamlit-ai-review")))] | sort_by(.submitted_at) | last | .body' \ | grep -A2 "## Verdict" ``` The verdict section contains a bold keyword indicating the result: - **`**APPROVED**`** → exit loop, PR is ready - **`**CHANGES_REQUESTED**`** → continue iterating, address the feedback Do not start another iteration after an `APPROVED` verdict, even if `fixing-pr` pushed follow-up CI fixes. Those commits are covered by CI but not by the AI review. ### 12. Final AI review After the review loop, apply `ai-final-review` once. Wait until a `queued` or `in_progress` `ai-pr-review.yml` run shows up for this branch, then start `/fixing-pr` — it returns immediately if nothing is queued yet: ```bash gh pr edit --add-label "ai-final-review" gh run list --branch "$(git branch --show-current)" --workflow ai-pr-review.yml --status queued gh run list --branch "$(git branch --show-current)" --workflow ai-pr-review.yml --status in_progress ``` Run `/fixing-pr` once so it can wait for CI and address comments. Do this exactly once, whether step 11 was approved or ran out of iterations. Do not re-apply `ai-final-review`. After `/fixing-pr`, commit and push remaining changes. ### 13. Post agent metrics Post the agent metrics to the PR body: ```bash uv run python scripts/log_agent_metrics.py --post ```
View on GitHub