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…
Runs Python unit tests with coverage, analyzes coverage reports, and implements meaningful tests to increase coverage by ~0.2%. Use when you want to systematically improve Python test coverage with high-value test cases.
Claude Code
$ npx -y skills add streamlit/streamlit --skill improving-python-coverage --agent claude-code
Codex
$ npx skills add streamlit/streamlit --skill improving-python-coverage -a codex -y
Cursor
$ npx skills add streamlit/streamlit --skill improving-python-coverage -a cursor -y
Gemini CLI
$ npx skills add streamlit/streamlit --skill improving-python-coverage -a gemini-cli -y
GitHub Copilot
$ npx skills add streamlit/streamlit --skill improving-python-coverage -a github-copilot -y
OpenCode
$ npx skills add streamlit/streamlit --skill improving-python-coverage -a opencode -y
Windsurf
$ npx skills add streamlit/streamlit --skill improving-python-coverage -a windsurf -y
name: improving-python-coverage description: Runs Python unit tests with coverage, analyzes coverage reports, and implements meaningful tests to increase coverage by ~0.2%. Use when you want to systematically improve Python test coverage with high-value test cases.
Increase Python unit test coverage by ~0.2% through meaningful tests that add real value.
**Be fully autonomous** — Do NOT stop or pause to ask for confirmation. Keep iterating (analyze → implement → verify) until the 0.2% coverage target is reached. If you encounter ambiguities about what to test, make a reasonable choice and proceed.
**Step 1: Run tests with coverage**
make python-tests # ~3 min, creates .coverage file
Generate JSON report for analysis:
uv run coverage json -o coverage.json
The JSON contains per-file `missing_lines` arrays showing uncovered line numbers.
**Step 2: Analyze and prioritize**
Read `coverage.json` to find files with: 1. Large size + below-average `percent_covered` (high impact) 2. Core modules in `lib/streamlit/elements/` or `lib/streamlit/runtime/` 3. Pure utility functions
Skip: >97% coverage, `proto/*`, `vendor/*`, `static/*`, test files.
**Step 3: Implement tests (in subagent)**
Launch a subagent to implement tests for each prioritized file. Provide the subagent with:
The subagent should: 1. Read source and existing tests at `lib/tests/streamlit/<path>/<module>_test.py` 2. Write tests for: conditional branches, error handling, edge cases, exception paths 3. Follow `lib/tests/AGENTS.md`: prefer pytest-style standalone functions over `unittest.TestCase` classes, use `@pytest.mark.parametrize` to consolidate tests that only differ in inputs/expected outputs, add numpydoc docstrings and type annotations 4. Run the new tests to verify they pass: `uv run pytest lib/tests/streamlit/path/to/module_test.py -v`
**Step 4: Verify and iterate**
uv run pytest lib/tests/streamlit/path/to/module_test.py -v # Run new tests make python-tests # Measure progress
**Repeat steps 2-4 until coverage improves by ≥0.2%**, then run `make check`.
**Step 5: Simplify, review, and address feedback**
Once all tests pass and coverage target is met:
1. Run the `simplifying-local-changes` subagent to clean up and simplify the code changes. Wait for completion. 2. Run the `reviewing-local-changes` subagent to review the changes. Wait for completion and read the review output. 3. Address the review feedback: for each recommendation, implement it if valid and improves code quality; skip with brief reasoning if not applicable or would over-engineer. 4. Run /checking-changes to verify everything still passes after changes.
**DO test:** Conditional logic, error handling, edge cases (None, empty, zero, max), public API functions, complex branches.
**DON'T test:** Simple accessors, protobufs, implementation details, already well-covered code.
**Coverage exclusions:** Use `# pragma: no cover` sparingly for code that genuinely doesn't need testing. Always include a reason (e.g., `# pragma: no cover - defensive`):
**Integration dependencies:** Packages listed under `[dependency-groups] integration` in `pyproject.toml` (e.g., `pydantic`, `sympy`, `polars`, `sqlalchemy`) are only installed for integration tests, not regular unit tests. When writing tests that use these packages:
`lib/tests/streamlit/<package>/<module>_test.py` mirrors `lib/streamlit/<package>/<module>.py`
Before adding tests or `# pragma: no cover` for such code, verify whether it's already exercised in CI.
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…