원클릭으로
test-gaps
Identify new code paths added in the current branch that have no test coverage. Reports gaps; does not write tests.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Identify new code paths added in the current branch that have no test coverage. Reports gaps; does not write tests.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Author a new Fred agent capability (manifest + middleware) built on fred-sdk. Picks the right authoring lane, maps each runtime need to a middleware hook, wires entry-point registration, and enforces the capability boundary (never hand-edit union/registry hotspots, no capability code in control-plane, no runtime info in LLM tool signatures).
Query OpenFGA authorization tuples and explain why a user has (or doesn't have) a permission on an object
Safety-first review of an external pull request from an untrusted fork. Fetches the diff read-only into an isolated worktree, scans for supply-chain / exfiltration / CI-tampering threats, checks scope, then delegates correctness review. Never builds or runs the fork's code.
Pre-PR audit of the current branch — dead code, duplicate symbols, contract drift, leftover artifacts, import gaps.
Post-merge validation — check that both sides of a merge were fully integrated, nothing was silently dropped, and quality still passes.
Run make code-quality from the monorepo root, covering all modules. Never run it per-module.
| name | test-gaps |
| description | Identify new code paths added in the current branch that have no test coverage. Reports gaps; does not write tests. |
| user-invocable | true |
| argument-hint | [{"optional":"module name"},"e.g. \"control-plane-backend\" | \"fred-core\""] |
Find public functions, methods, and classes added or significantly changed in this branch that have no corresponding test. This skill reports gaps — it does not write tests. Writing tests is a separate, intentional act that requires the developer's judgment.
Open team decision — whether to generate stubs: Some teams find it useful for this skill to optionally produce empty test stubs (functions with
passbodies) so the developer can fill them in. Others prefer a clean report only. Agree on this before the first team-wide rollout — the argument would be/test-gaps --stubs.
git diff --name-only origin/develop...HEAD
Filter to Python files only. If $ARGUMENTS names a module, restrict to that module's files.
For each changed Python file:
git diff origin/develop...HEAD -- <file> and extract added lines (+ prefix).def and async def functions at module level.def and async def methods inside classes (public only — skip names starting with _).origin/develop) vs modified.Ignore private helpers (_name) and dunder methods (__name__) — they are tested indirectly.
For each source file, locate its test counterpart using these conventions (in order):
tests/test_<module_name>.py in the same app root.tests/<subpath>/test_<filename>.py mirroring the source path.tests/ that imports the source module.If no test file exists: the entire module is untested — flag as a gap.
For each new callable found in Step 2, grep the test files for any reference to that callable's name:
grep -rn "<callable_name>" tests/
If no test file references the callable: flag it as untested.
Open team decision — integration tests: Do tests that hit a real database (e.g. store-layer tests using a live Postgres engine) count toward coverage? Or only isolated unit tests with mocks? This affects whether
test_task_store.pysatisfies coverage for the store layer. The team should align on this — it changes how many gaps this skill reports.
## Test gaps — <branch> — <date>
### Untested modules (no test file found)
- `apps/control-plane-backend/control_plane_backend/tasks/service.py`
### Untested callables
| File | Callable | Type | Status |
|------|----------|------|--------|
| `tasks/service.py` | `TaskService.create_run` | method | no test reference found |
| `tasks/store.py` | `TaskStore.append_event` | method | no test reference found |
### Partially covered
| File | Callable | Covered by |
|------|----------|------------|
| `tasks/api.py` | `get_task_run` | `test_task_store.py` (indirect) |
### ✅ Well covered
- `fred_core/tasks/bus.py` — all public methods referenced in tests
Open team decision — coverage threshold: Should this skill flag a gap only when 0 tests exist, or when coverage falls below a threshold (e.g. 70%)? A threshold requires integrating
pytest-covoutput; zero-reference detection works without any test runner. Decide which model the team wants before adding this to the PR checklist.