- name
- frb-categorize-code-diff
- description
- Use when classifying a flutter_rust_bridge branch or PR diff into test and non-test changes, including colocated Rust test modules.
# 1 When to use
- Use this skill to answer which changes in a branch or PR are tests and which are not.
- Use the repository script instead of classifying paths by hand. Rust tests are commonly colocated in production `.rs` files.
## 2 Run
- Fetch the PR base before relying on `origin/master`.
- Run from the repository root:
```bash
uv run --no-project .claude/skills/frb-categorize-code-diff/categorize_code_diff.py --base origin/master --head HEAD
```
- Add `--json` when another tool will consume the result.
- Pass the PR's actual base revision when it is not `origin/master`.
## 3 Interpret
- `test-only`: every changed line is in a dedicated test path or a recognized colocated Rust test region.
- `non-test-only`: every changed line is outside recognized test code.
- `mixed`: the file contains both test and non-test changed lines.
- `unclassified`: the diff cannot be mapped confidently, such as a binary patch.
- Treat the non-test list as conservative. Unknown code is non-test rather than silently counted as test.
## 4 Reliability
- The script compares `base...head`, matching GitHub pull request diff semantics.
- Dedicated test paths include `test/`, `tests/`, `test_fixtures/`, and conventional test filenames.
- Rust inline classification recognizes brace-delimited items preceded by `#[cfg(test)]` or `#[test]` in both the base and head revisions.
- Re-run after every PR update. Line identities and rename targets may change.
- Inspect `mixed` files manually before claiming that a PR contains no production changes.
## 5 Validation
- Run the script tests after changing its classification logic:
```bash
PYTHONDONTWRITEBYTECODE=1 uv run --no-project --with pytest --with typer pytest -q .claude/skills/frb-categorize-code-diff/test_categorize_code_diff.py
```
- Keep `PYTHONDONTWRITEBYTECODE=1`; otherwise pytest leaves an untracked `__pycache__/` inside the skill directory.
Voir sur GitHub