addressing-pr-review-c…
Address all valid review comments on a PR for the current branch in the streamlit/streamlit repo. Covers both inline review…
Triages a failed Nightly Build run and resolves it. Reruns the failed jobs when the failure is transient (flaky test, network or runner hiccup), fixes a real breakage on develop and opens a PR, or reports failures that need a maintainer, such as PyPI publishing errors. Use when
Claude Code
$ npx -y skills add streamlit/streamlit --skill fixing-nightly --agent claude-code
Codex
$ npx skills add streamlit/streamlit --skill fixing-nightly -a codex -y
Cursor
$ npx skills add streamlit/streamlit --skill fixing-nightly -a cursor -y
Gemini CLI
$ npx skills add streamlit/streamlit --skill fixing-nightly -a gemini-cli -y
GitHub Copilot
$ npx skills add streamlit/streamlit --skill fixing-nightly -a github-copilot -y
OpenCode
$ npx skills add streamlit/streamlit --skill fixing-nightly -a opencode -y
Windsurf
$ npx skills add streamlit/streamlit --skill fixing-nightly -a windsurf -y
name: fixing-nightly description: Triages a failed Nightly Build run and resolves it. Reruns the failed jobs when the failure is transient (flaky test, network or runner hiccup), fixes a real breakage on develop and opens a PR, or reports failures that need a maintainer, such as PyPI publishing errors. Use when the nightly build fails, when asked to investigate or fix the nightly, or when the ai-fix-nightly workflow runs.
The `Nightly Build` workflow (`.github/workflows/nightly.yml`) tags `develop`, runs the Python (`python-tests.yml`), JavaScript (`js-tests.yml`), and Playwright (`playwright.yml`) suites against that tag. It publishes `streamlit-nightly` to PyPI only after every test job passes. Rerunning the failed jobs also reruns the jobs that depend on them, so a successful rerun still publishes that night's build.
The goal is a green nightly with the least work: rerun what was transient, fix what is broken, and hand the rest to a maintainer.
A Nightly Build run ID or URL. Without one, use the most recent failed run of `nightly.yml`.
- [ ] Collect the failed jobs, steps, and first errors - [ ] Compare against history - [ ] Classify: rerun, fix, or report - [ ] Act on the decision - [ ] Write the summary
| Decision | Signals | |----------|---------| | **rerun** (transient) | Network or registry errors (yarn, uv, pip, apt, GitHub API 5xx, `ECONNRESET`), runner lost or shut down, artifact upload or download errors, timeouts during setup. A single test failing on one browser or Python version that passes elsewhere in the run and in other recent runs. Errors that point at the environment instead of the code, such as `Invalid file descriptor` in one pytest worker. | | **fix** (real breakage) | The same failure across browsers, Python versions, or attempts. Lint, type, or build errors. Snapshot mismatches in every browser. The failure reproduces on current `develop`, or started with a specific commit. Tests that depend on the current date and break on a specific day also count, even if they would pass tomorrow. | | **report** (needs a maintainer) | Publishing and release steps: PyPI upload, tag creation, S3 upload. Missing secrets or permissions. An external outage that will not clear soon. The rerun limit is reached and no clear fix exists. `develop` or an open PR already fixes the failure. |
Keep these in mind:
**rerun:** Outside CI, rerun only the failed jobs (`gh run rerun <id> --failed`). In CI, record the decision and let the workflow rerun the jobs.
**fix:**
1. Start from the latest `develop`, not the nightly tag. The tag adds a version-bump commit that must not end up in a PR. 2. Reproduce the failure with the matching `make` target or test command. For E2E tests, build the frontend with `make frontend-with-profiler` (as CI does) and run `make run-e2e-test <file>`. 3. Fix the root cause with the smallest change. Do not skip or delete tests, loosen assertions or snapshot thresholds, or add `@pytest.mark.flaky` to turn the build green. For flaky E2E tests, follow the `fixing-flaky-e2e-tests` skill. 4. Update snapshots only when the visual change is intended, such as a commit that deliberately changed the UI. Take Linux snapshots from the run's `snapshot-updates/` artifact instead of rendering them on another OS, and copy only the images for the failing tests. 5. Verify: rerun the failing tests and `make check`. 6. Outside CI, finalize the change and open the PR with the `finalizing-pr` skill. Use a `[fix] ...` title. In the description, link the nightly run and name t
Address all valid review comments on a PR for the current branch in the streamlit/streamlit repo. Covers both inline review…
Assesses whether branch or PR changes are high-risk for externally hosted or embedded Streamlit usage and recommends whether…
Validates all code changes before committing by running format, lint, type, and unit test checks. Use after making backend…
Creates a draft pull request on GitHub with proper labels, branch naming, and description formatting. Use when changes are ready…
Debug Streamlit frontend and backend changes using make debug with hot-reload. Use when testing code changes, investigating bugs,…
Lists available make commands for Streamlit development. Use for build, test, lint, or format tasks.
Performs AI-powered code review on Git changes using the `ocr` CLI from alibaba/open-code-review. Use when the user asks to…
Build or update the code review knowledge graph. Run this first to initialize, or let hooks keep it updated automatically.
Maps the `hunkdiff/extension` authoring surface for Hunk, the terminal diff viewer — hiding or reordering reviewed files, docked…