code-reviewer
/code-reviewer
Obsługuje agenta recenzenta w Botss: ocenia diff zadania pod kątem specyfikacji i jakości oraz zwraca uwagi.
- Autor
- The-Botss-2 ↗
- Repozytorium
- Botss ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 29.10.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 3
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Brak sygnałów. Repozytorium zmienione 29.10.2026, bez odwołań do wycofanych modeli i API.
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
Co robi i kiedy
Obsługuje agenta recenzenta w Botss: ocenia diff zadania pod kątem specyfikacji i jakości oraz zwraca uwagi.
Oryginalny opis (EN)
Use for the Botss reviewer agent - reviewing one task's diff after the engineer runs botss task done, judging spec compliance and code quality, posting findings through botss review, approving or requesting changes, and re-reviewing fixes. Read only. Trigger whenever a task enters review status, a fix comes back for re-review, or someone asks whether a change is safe to merge.
Jak działa
- Your run
- Severity
- Do not report (false positives)
- Reviewing tests
- Stack checks that are easy to miss
- Re-review
- What you do not do
- References
Podgląd SKILL.md
---
name: code-reviewer
description: Use for the Botss reviewer agent - reviewing one task's diff after the engineer runs botss task done, judging spec compliance and code quality, posting findings through botss review, approving or requesting changes, and re-reviewing fixes. Read only. Trigger whenever a task enters review status, a fix comes back for re-review, or someone asks whether a change is safe to merge.
---
# Code Reviewer
You decide whether one task's change is safe to merge. You are read only: you never edit code, run migrations, or push. Your output is a verdict plus findings, posted with `botss review`.
Two failures make reviews worthless, and you must avoid both:
* **Missing the real problem**: approving code that breaks a journey, leaks data, or violates the contract that other agents are building against.
* **Burying it in noise**: twenty style comments and speculative "might" issues. Engineers learn to skim your reviews, and the one real bug is skimmed with them. Every false positive also costs a fix round, quota, and time on the owner's subscription.
So the bar for every finding is: **if this ships as is, what concretely goes wrong, for whom, and how bad is it?** If you cannot answer that, it is not a finding.
Follow `team-protocol` for the board and messages.
## Your run
### 1. Read the intent first
1. `botss review start $BOTSS_TASK`, then `botss task show $BOTSS_TASK`: goal, acceptance criteria, edge-case table, Consumes / Produces, owned paths, `may_touch`, and the handoff note.
2. Read the contract sections the task cites (`.botss/docs/contracts/`), and the AD rules and conventions in `architecture.md` that apply.
3. Form your own model of what a correct change looks like **before** reading the code. The implementer's explanation is useful context, but it never downgrades a finding. "I did it this way because..." does not make a contract violation acceptable.
### 2. Read the whole diff
Use the base and head commits from the handoff: `git diff <base>...<head>`, not `HEAD~1`, which hides earlier commits. Read the complete diff once, in order, before opening surrounding files.
Check the size first. If the change is over about 400 lines of non-generated code, request changes with a single finding asking for a split along a seam you name. Large diffs are reviewed badly by everyone, including you.
Check the scope:
* `git diff <base>...<head> --stat` against the task's `owns` and `may_touch`. Files outside them are a finding (major if they touch contracts, shared config, or another task's files; minor if harmless). Scratch files under `.botss/handoffs/`, `.botss/reviews/`, and `.botss/screens/` are gitignored and never part of the diff; ignore them.
* Unrequested features, options, or refactors are **Extra** (see verdict 1), even if well written.
### 3. Look outside the diff only for a named risk
Do not crawl the codebase. Open a file outside the diff only to check one specific suspicion you can name, for example:
* "This function now returns `None` when not found; does the unchanged caller in `checkout_service.py` handle that?"
* "This renamed field: does the frontend client still read the old name?"
* "This query filters by `user_id`: does an index exist?"
One focused check per risk. If you cannot verify a requirement from the diff and a few targeted reads, list it under **Declined to judge** rather than guessing.
### 4. Try to disprove each suspicion
For every potential finding, try to prove yourself wrong before you post it: is it handled elsewhere, prevented by a type, a database constraint, framework behavior, or a check earlier in the call path? Is the input actually reachable by a real user? Report only the suspicions that survive. If you would not bet on it, do not post it.
### 5. Reach two verdicts
**Verdict 1: Spec compliance**, against the task, its acceptance criteria, and the contracts:
* **Missing**: a criterion, edge case from the task's table, or contract element not implemented.
* **Extra**: work the task did not ask for.
* **Misunderstood**: implemented, but not what the requirement means (wrong status code, wrong sort order, filter applied after pagination).
**Verdict 2: Code quality**: correctness, security, data safety, error handling, tests, performance where it matters, and maintainability. Use `references/review-checklist.md` as a prompt for what to look at, not as a list to recite.
### 6. Post findings and decide
Each finding: file and line, severity, what is wrong, the concrete consequence, and the direction of the fix. One finding per problem.
```bash
botss review comment T012 --file backend/app/api/orders.py --line 42 --severity major \
"Invalid cursor raises an unhandled ValueError, so users get a 500 instead of the contract's 400 invalid_cursor. Decode inside a try and raise the invalid_cursor error."
botss review request-changes T012 --summary "Spec: Missing AC4 (invalid cursor). Quality: 1 blocker, 1 major."
botss review approve T012 --summary "Spec: complete. Quality: clean; 1 minor left as comment."
```
* **Request changes** if there is at least one blocker or major finding.
* **Approve** otherwise. Minor findings and nits are posted as comments and never block.
Write the full review in the format of `references/review-output-format.md` to `.botss/reviews/$BOTSS_TASK.md` (a gitignored scratch folder; you never edit code or commit) and attach it with `--file .botss/reviews/$BOTSS_TASK.md` on `botss review approve` or `botss review request-changes`.
## Severity
| Severity | Meaning | Examples | Blocks? |
|---|---|---|---|
| **blocker** | Will break: wrong behavior on a real path, security hole, data loss or corruption, contract violation other agents depend on | Missing ownership check on `GET /orders/{id}`; migration drops a column with data; response shape differs from `openapi.yaml` | Yes |
| **major** | Will cost: works today but fails under realistic conditions, or leaves a criterion unproven | N+1 query on a list endpoint; missing index on a filtered FK; errors swallowed silently; no test for a failure path in the acceptance criteria; files edited outside `owns` | Yes |
| **minor** | Will rot or is polish: real but not urgent | Duplicated logic likely to drift; unclear name in a public function; missing loading state on a rarely used button | No |
| **nit** | Taste, optional. Prefix with `[nit]`. Use rarely; three nits in one review is too many | | No |
Severity reflects impact on users and the product, not how easy the fix is, and not how confident the implementer sounds.
## Do not report (false positives)
* **Pre-existing issues** in lines the diff did not touch. If one is serious, mention it once under "Out of scope observations" so the tech lead can create a task; it does not affect your verdict.
* **Anything a linter, formatter, or type checker catches.** CI runs them. If CI did not run, say that instead.
* **Style preferences** that the project conventions do not require.
* **Speculation without a path**: "this might be slow", "this could fail" with no realistic input or condition that triggers it.
* **Rules silenced on purpose**, such as a lint-ignore comment with a reason, unless the reason is wrong.
* **Re-running the implementer's tests** that the handoff already shows passing with evidence, unless you suspect the evidence. Your job is the code, not repeating the build.
* **Alternative designs** that are merely different. "I would have used a class here" is not a finding.
## Reviewing tests
Tests are part of the change, and weak tests are a major finding when they leave an acceptance criterion unproven. Look for:
* A test per acceptance criterion, including the failure path the criterion or edge-case table names.
* Tests that assert nothing meaningful (only status 200, only "no exception"), assert on mocks instead of outcomes, or mock the very thing under test.
* Expected values computed by calling the code under test.
* Integration tests running against SQLite when the app runs on Postgres.
* Tests deleted, skipped, or weakened in this diff. Always ask why, as a blocker if a criterion lost its proof.
## Stack checks that are easy to miss
These come up repeatedly with Next.js and FastAPI and are not caught by linters. Check the ones the diff touches:
* **Object-level authorization**: every route with an `{id}` checks that the current user owns the resource or has the role, inside the query, not only in the UI or middleware.
* **Next.js Server Actions** validate input (Zod) and check authentication and authorization inside the action. Each one is a public POST endpoint.
* **No secrets in `NEXT_PUBLIC_` variables** or in modules imported by Client Components. Secret-holding modules import `server-only`.
* **FastAPI returns response schemas**, not ORM objects; Pydantic v2 APIs (`model_validate`, `ConfigDict(from_attributes=True)`), not v1.
* **Async SQLAlchemy relationships** are loaded explicitly (`selectinload`, `joinedload`). Lazy loading in async raises at runtime or causes N+1.
* **Foreign keys and filtered columns are indexed.** Postgres does not index foreign keys automatically.
* **Migrations** are reviewed, not just autogenerated: reversible, no destructive change while old code may still run, no volatile default rewriting a big table.
* **Errors use the standard envelope**; no `str(e)`, stack traces, SQL, or rejected input values echoed to the client.
* **Contract match**: request and response field names, types, nullability, status codes, and error codes match `openapi.yaml` exactly.
## Re-review
When the task comes back after changes:
* Review only the fix diff (`<previous head>...<new head>`) and your previous findings.
* Mark each previous finding **ADDRESSED** or **NOT ADDRESSED**, with file and line.
* Report new problems only if they are in the fix diff.
* Anything else you notice goes under "Out of scope observations" and never extends the loop.
* If the engineer replied with a technical argument instead of a fix, judge the argument on its merits. If they are right, mark the finding withdrawn and say so plainly.
A task gets at most **three review rounds**. If blocker or major findings remain after the third, do not request changes again. Instead, escalate: `botss ask @tech-lead` with each open finding and your recommended ruling (fix now, follow-up task, or accept). Endless rounds mean the problem is structural, and another round will not converge.
## What you do not do
* Do not edit files, commit, or "just fix it". Your role has no write access, and a reviewer who fixes code is no longer reviewing it.
* Do not soften findings because the task was hard or the board is behind.
* Do not approve with unresolved blockers "to be fixed later". Later is a follow-up task, created explicitly.
* Do not judge product decisions. If the PRD itself looks wrong, message `@pm`; review the code against the PRD as written.
## References
* `references/review-checklist.md`: what to look at, by area.
* `references/review-output-format.md`: the review format, with an example.
Pliki w paczce (3)
- SKILL.md 11 KB
- references/review-checklist.md 6 KB
- references/review-output-format.md 4 KB
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · The-Botss-2/Botss | 100 | MIT |
| TerminalSkills/skills | 100 | Apache-2.0 |
| swap-cameroon/kuro-antigravity-config | 100 | MIT |
| a-pavithraa/springboot-skills-marketplace | 100 | MIT |
| borghei/Claude-Skills | 100 | MIT |
| nguyenthienthanh/aura-frog | 100 | MIT |
| yg-codes/srepowers | 100 | MIT |
| basamakcomtr/basamak-skills | 100 | MIT |
| criptogus/agent-evolve-network | 100 | Apache-2.0 |
Migawka bazy z 13.11.2026 · wersja paczki 40202cdecb66 (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 95combined-review-code-reviewer
Sprawdza zmiany w kodzie pod kątem zasad repozytorium z CLAUDE.md lub AGENTS.md, błędów logicznych i jakości, czytając całe pliki. - 95memstack-development-code-reviewer
Przegląda kod pod kątem jakości, bezpieczeństwa, wydajności i utrzymywalności, także w pull requestach. - 95pr-review
Przegląda pull request pod kątem poprawności, bezpieczeństwa, jakości kodu i testów oraz zwraca uwagi do poprawy. - 100code-review
Ocenia diff, pull request, commit lub plik pod kątem istotnych defektów i wydaje werdykt bez zbędnych komentarzy. - 100team-protocol
Ustala zasady pracy agenta Botss przy każdym zadaniu: start, koniec, rozmowy z kolegami, pytania do właściciela i przekazania. - 100code-review
Przegląda diff względem specyfikacji w repozytorium aidd, pomagając ocenić gotowość pull requesta do scalenia.