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…
Investigates the check-run annotations (deprecation warnings, resource warnings, logged errors, tool notices) from the latest successful py-unit-tests (max) and js-unit-tests jobs on develop, separates real problems from informational notices, and fixes the causes of the real
Claude Code
$ npx -y skills add streamlit/streamlit --skill fixing-ci-annotations --agent claude-code
Codex
$ npx skills add streamlit/streamlit --skill fixing-ci-annotations -a codex -y
Cursor
$ npx skills add streamlit/streamlit --skill fixing-ci-annotations -a cursor -y
Gemini CLI
$ npx skills add streamlit/streamlit --skill fixing-ci-annotations -a gemini-cli -y
GitHub Copilot
$ npx skills add streamlit/streamlit --skill fixing-ci-annotations -a github-copilot -y
OpenCode
$ npx skills add streamlit/streamlit --skill fixing-ci-annotations -a opencode -y
Windsurf
$ npx skills add streamlit/streamlit --skill fixing-ci-annotations -a windsurf -y
name: fixing-ci-annotations description: Investigates the check-run annotations (deprecation warnings, resource warnings, logged errors, tool notices) from the latest successful py-unit-tests (max) and js-unit-tests jobs on develop, separates real problems from informational notices, and fixes the causes of the real ones. Use when asked to clean up CI warnings or annotations from passing unit-test jobs, or when the ai-fix-ci-annotations workflow runs.
Passing unit-test jobs still leave annotations on their check runs: deprecation warnings, `ResourceWarning`s, warnings that pandas, pyarrow, or other libraries raise, errors logged by background threads, and tool notices such as Knip. They don't fail the job, so they pile up and hide new problems. On the Python side, `pytest-github-actions-annotate-failures` turns each entry of the pytest warnings summary into an annotation. GitHub keeps at most 10 warning annotations per step, so the warnings summary in the job log is the complete list.
The goal is a cleaner next run, by fixing what causes each annotation instead of hiding it. Not every annotation is worth a change: some are informational. Decide per annotation whether it points to a real problem before touching code.
Job URLs or IDs. Without them, use the latest successful `push` run on `develop` of these jobs:
| Workflow | Job | Why this job | |----------|-----|--------------| | `python-tests.yml` | `py-unit-tests (max)` | Newest supported Python, so deprecations from new Python versions and the dependencies tied to them show up here first | | `js-tests.yml` | `js-unit-tests` | Knip configuration hints. Vitest console output, such as React `act()` warnings, shows up only in the job log, not as annotations |
GitHub's REST run filters (`--branch`, `--status`) can return stale results. Check the run's branch, event, and conclusion yourself.
- [ ] Collect and group the annotations - [ ] Find the test or code that triggers each group - [ ] Classify: fix, leave, or report - [ ] Fix and verify - [ ] Write the summary
| Decision | Signals | |----------|---------| | **fix** | Streamlit code calls a deprecated API that has a replacement. A test leaks resources (unclosed files, sockets, event loops, threads, observers), leaves a coroutine unawaited, watches a shared directory such as `/tmp`, or misses a mock. A test triggers the warning on purpose to cover an edge case, and a one-line scoped assertion or filter keeps it out of the run. Library code shows users a warning it shouldn't. React `act()` warnings and other console errors in the Vitest log. Knip configuration hints, such as stale `ignore` entries. | | **leave** (informational) | The annotation describes expected behavior and points to no problem: progress or summary notices from a tool, a library's one-time info message, or a warning whose only fix would make the test or the code worse. Leave these alone and say why in the summary. | | **report** | The warning comes from third-party internals that Streamlit can't avoid. If a compatible upgrade would fix it, name the package and version so the weekly lock update or a maintainer picks it up. The fix needs a `.github/workflows/` change, a major dependency upgrade, or a product decision. A commit on `develop` since the run, or an open PR, already handles it. This includes PRs on `ai-fix-ci-annotations-*` branches from earlier runs. For unavoidable third-party warnings, suggest a module-scoped `filterwarnings` entry like those in `lib/pyproject.toml`. |
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 or updates a pull request on GitHub with proper labels, branch naming, and description formatting. Use when changes are…
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 initialise, 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…