panel
/panel
Ocenia zmianę w kodzie oczami pięciu ról recenzentów i tworzy kartę wyniku z ocenami oraz krótkimi uwagami.
- Autor
- dadwritestech ↗
- Repozytorium
- review-panel ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 28.10.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 7
- Skrypty
- 1
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Brak sygnałów. Repozytorium zmienione 28.10.2026, bez odwołań do wycofanych modeli i API.
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
- 1 skrypt w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.
Skrypty: scripts/render_card.py
Co robi i kiedy
Ocenia zmianę w kodzie oczami pięciu ról recenzentów i tworzy kartę wyniku z ocenami oraz krótkimi uwagami.
Wyzwalacze z opisu
Argumenty
/panel [PR number or URL | branch | commit range | nothing = current changes]
Oryginalny opis (EN)
Runs a code change past five archetype reviewers (The Laziest Senior Dev, The 3am On-Call SRE, The Security Paranoiac, The Junior Who Asks Why, The PM Who Only Reads the Title). Each runs as an isolated subagent. Prints one screenshot-ready verdict card with scores and one-line roasts, and keeps real findings apart from the jokes. Use for /panel, "roast my PR", "review panel", "panel review this diff".
Jak działa
- 1. Collect the change
- 2. Run the panel
- 3. Merge the results
- 4. Render the card
- 5. Reply
Podgląd SKILL.md
---
name: panel
description: >
Runs a code change past five archetype reviewers (The Laziest Senior Dev, The
3am On-Call SRE, The Security Paranoiac, The Junior Who Asks Why, The PM Who
Only Reads the Title). Each runs as an isolated subagent. Prints one
screenshot-ready verdict card with scores and one-line roasts, and keeps real
findings apart from the jokes. Use for /panel, "roast my PR", "review panel",
"panel review this diff".
argument-hint: "[PR number or URL | branch | commit range | nothing = current changes]"
---
# /panel
Five reviewers. Five isolated subagents. One verdict card.
The roasts are for the screenshot. The findings are for the merge button.
Never mix them up: a joke is never a finding, and a real finding is never
softened into a joke.
## 1. Collect the change
Work out what to review from the argument:
| Argument | Diff | Title and description |
|---|---|---|
| PR number or URL | `gh pr diff <n>` | `gh pr view <n> --json title,body` |
| branch name | `git diff <base>...<branch>` (base: `main`, else `master`) | last commit subject on the branch, plus branch name |
| commit range `a..b` | `git diff a..b` | `git log --format=%s a..b` |
| nothing | `git diff HEAD` (staged and unstaged); if empty, `git show HEAD` | uncommitted: "Uncommitted changes" plus branch name; last commit: its subject and body |
Also get the file list with line counts: same command with `--stat`.
If the diff is empty, say "Nothing to review." and stop. If the diff is larger
than about 3,000 lines, tell the user and review only the first 3,000 lines.
Say on the card that it was truncated.
## 2. Run the panel
Read the five persona files in `personas/`, next to this file:
- `personas/lazy-senior.md`
- `personas/oncall-sre.md`
- `personas/security-paranoiac.md`
- `personas/junior-asks-why.md`
- `personas/pm-title-only.md`
Dispatch **five subagents in parallel, in a single message**, one per persona.
Use the general-purpose agent type. Each subagent is isolated: it gets only
its own prompt and never sees the other reviewers' output or this
conversation.
Each subagent's prompt is, in this order:
1. The full text of its persona file.
2. The **review contract** below, verbatim.
3. The change:
- **The PM** gets only the title, the description, and the `--stat` file
list. Never give the PM the diff. That is the joke, and it is also the
test: can the files alone contradict the title?
- **Everyone else** gets the title, the description, and the full diff. They
may read the surrounding files in the repo to check a suspicion, but they
must not edit anything.
### Review contract (paste verbatim into every subagent prompt)
```
You are one reviewer on a five-person panel. Stay fully in character for the
roast. Be completely serious for the findings.
Reply with ONLY a JSON object, no prose before or after:
{
"persona": "<your id from the persona file>",
"score": <integer 1-10, your rubric>,
"roast": "<one line, max 100 characters, in your voice>",
"findings": [
{
"severity": "blocker" | "major" | "minor",
"file": "<path>",
"line": <line number in the new file, or null>,
"title": "<max 80 characters, plain words>",
"failure": "<the concrete input or situation, and the wrong result>",
"fix": "<the smallest fix>"
}
]
}
Rules:
- A finding is a real defect or risk with a concrete failure case. No case,
no finding. Style, taste, and naming are not findings.
- Read the lines again before you report. If you are not sure, leave it out.
- blocker: wrong result, crash, security hole, data loss, or outage in normal
use. major: real failure under a plausible condition. minor: real but small.
- At most 5 findings. An empty list is a good answer for a good change.
- The roast is about the code, never the author. No slurs, nothing about
people's identity. It can be harsh; it cannot be cruel.
- Your score follows your rubric. Do not grade on a curve.
```
## 3. Merge the results
When all five return:
1. Parse each JSON reply. If one is not valid JSON, ask that subagent once to
resend only the JSON. If it fails again, give it score `null` and the roast
"(left the meeting)".
2. **Check every finding yourself** against the diff: the line must exist and
the failure must actually follow from the code. Drop the ones that do not
hold. This is the step that keeps the panel honest. Five reviewers produce
noise; you are the filter.
3. **Merge duplicates.** The same defect at the same place, found by several
reviewers, becomes one finding with all their ids in `by`. Keep the highest
severity among them.
4. Write `panel.json` to the system temp directory (a `review-panel-<short
sha or timestamp>` folder), never into the repo:
```json
{
"title": "<PR or commit title>",
"target": "<what was reviewed, e.g. PR #42, HEAD, main...feature>",
"truncated": false,
"reviews": [ <the five persona replies as returned, after step 1> ],
"findings": [ <merged, checked findings, each with "by": ["<persona id>", ...]> ],
"dropped": <number of findings dropped in step 2>
}
```
## 4. Render the card
Run the renderer (Python 3, standard library only). It sits next to this
file:
```bash
python "<this skill's dir>/scripts/render_card.py" "<tmp>/panel.json" --png
```
It prints the markdown card to stdout and writes `card.md`, `card.html`, and,
with `--png`, `card.png` next to `panel.json`. The PNG needs Chrome, Chromium,
or Edge. If none is found, the renderer says so and still writes the HTML.
The renderer computes the panel score and the verdict, so they do not depend
on your mood:
- **BLOCKED**: at least one blocker finding.
- **CHANGES REQUESTED**: at least one major finding.
- **SHIP IT**: otherwise.
If Python is not available, build the same markdown card by hand from
`panel.json`, using the same layout as `examples/card.md` in the repo.
## 5. Reply
Print the markdown card exactly as the renderer produced it. Then add one
line with the paths to `card.png` (or `card.html`). Do not repeat the
findings in prose. Do not add a summary, because the card is the summary.
Change no code. The panel reviews; it does not fix. If the user then asks
for fixes, the findings list is the to-do list.
Pliki w paczce (7)
- SKILL.md 6 KB
- personas/junior-asks-why.md 2 KB
- personas/lazy-senior.md 1 KB
- personas/oncall-sre.md 1 KB
- personas/pm-title-only.md 2 KB
- personas/security-paranoiac.md 2 KB
- scripts/render_card.py 11 KB
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · dadwritestech/review-panel | 100 | MIT |
| alecs5am/ralphy | 100 | Apache-2.0 |
| akseolabs-seo/ak-threads-booster | 100 | MIT |
| patforna/auto-task | 95 | MIT |
| dkpapadopoulos/auto-claude-skills | 90 | MIT |
Migawka bazy z 13.11.2026 · wersja paczki 1b9782707155 (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
- 100roast-rematch
Ocenia repozytorium ponownie po poprawkach i pokazuje zmianę wyniku, usunięte i nowe zarzuty oraz odświeżoną kartę wyniku. - 90roast-pr
Punktuje diff lub pull request, podając każdą uwagę z linią kodu i poprawką, a wynik zapisuje z blokerami i propozycjami komentarzy. - 100review-quality-gates
Opisuje panel weryfikacji i krytykę kompletności dla wyników wielu recenzentów w potoku review-branch. - 100code-review
Uruchamia równolegle panel wyspecjalizowanych recenzentów, w tym pod kątem bezpieczeństwa i architektury, i wydaje jedną rekomendację. - 100review-quality-gates
Zestawia wyniki równoległych recenzentów, dbając o panel weryfikacji i jawne pochodzenie współdzielonego kontekstu. - 100review-quality-gates
Dostarcza panel weryfikacji, krytyka kompletności i zasady łączenia wyników wielu recenzentów w jeden zestaw ustaleń.