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 comments and general PR (issue)…
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.
$ npx -y skills add streamlit/streamlit --skill improving-python-coverage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/improving-python-coverageContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
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.
Repo: streamlit/streamlit
Address all valid review comments on a PR for the current branch in the streamlit/streamlit repo. Covers both inline review comments and general PR (issue)…
Assesses whether branch or PR changes are high-risk for externally hosted or embedded Streamlit usage and recommends whether external e2e coverage with…
Validates all code changes before committing by running format, lint, type, and unit test checks. Use after making backend (Python) or frontend (TypeScript)…
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…
Debug Streamlit frontend and backend changes using make debug with hot-reload. Use when testing code changes, investigating bugs, checking UI behavior, or…
Lists available make commands for Streamlit development. Use for build, test, lint, or format tasks.