# Frb Categorize Code Diff

> Use when classifying a flutter_rust_bridge branch or PR diff into test and non-test changes, including colocated Rust test modules.

- Skill: `fzyzcjy/frb-categorize-code-diff` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add fzyzcjy/frb-categorize-code-diff`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fzyzcjy/frb-categorize-code-diff/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: fzyzcjy (https://skillmd.com/u/fzyzcjy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/fzyzcjy/frb-categorize-code-diff

---


# 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.

