Review pr
Skill rfl-designer/rfl-laravel-skills/skills/laravel/review-pr
Claude Code plugin orchestrating the Laravel 12 + Livewire 4 + Tailwind + Alpine + Flux UI development cycle: grill-with-docs, to-prd, to-issues, tdd (Pest), open-pr, simplify, review-branch, organize-docs, update-roadmap.
npx -y skills add rfl-designer/rfl-laravel-skills --skill review-prAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Review the current branch's pull request in a single consolidated pass without spawning review sub-agents. Checks Laravel idioms, Livewire/Flux/a11y, Pest test quality, and spec compliance against originating issue acceptance criteria. Use before merging, when user says "review the PR", "review my changes", "/review-pr [number]", or after /simplify.
SKILL.md
7.4 KB, as published. Nobody here has run it
Review PR
Revisa o PR atual em uma passagem consolidada, sem disparar sub-agents. O objetivo é reduzir consumo de token mantendo o gate essencial antes do merge: risco Laravel, apresentação Livewire/Flux, qualidade de testes Pest e aderência às issues fechadas.
Princípio operacional
Review é gate de merge, não backlog infinito. Separe risco real de preferência para evitar o ciclo tdd → review → tdd → review.
Use esta régua:
- BLOCKER — merge inseguro: acceptance criterion faltando, comportamento end-to-end quebrado, bug/regressão provável, risco de dados/segurança, migration irreversível/perigosa, autorização/validação ausente, teste que mascara falha crítica, ou a11y que impede uso básico.
- NIT — vale corrigir, mas não impede merge: idiom Laravel/Livewire melhorável, clareza de teste, PR body incompleto, inconsistência pequena sem risco imediato.
- NICE-TO-HAVE — preferência, melhoria futura, limpeza ou oportunidade arquitetural.
O output deve produzir uma fila triável. Não peça "voltar ao TDD" genericamente; aponte qual blocker aceito exige nova slice comportamental e qual pode ser resolvido com patch mínimo.
Pré-requisitos
ghCLI autenticado- Branch atual tem PR aberta, ou usuário passou número/URL como argumento
Processo
1. Determinar o PR
Resolução por prioridade:
- Se argumento explícito (
/review-pr 123ou/review-pr https://github.com/.../pull/123) → usar esse. - Senão, detectar PR da branch atual:
gh pr view --json number,title,body,baseRefName,headRefName,closingIssuesReferences,files - Se a branch não tem PR aberta → avisar e oferecer rodar
/open-prprimeiro.
2. Buscar PR + issues fechadas
gh pr view "$PR" --json number,title,body,baseRefName,headRefName,closingIssuesReferences,files,additions,deletions
Capturar:
- PR body — descrição, screenshots, checklist
- closingIssuesReferences — issues que serão fechadas (
Closes #Nparseado pelo gh) - baseRefName — base branch para o diff
- files — lista de arquivos tocados
Para cada issue em closingIssuesReferences:
gh issue view "$N" --json number,title,body,labels,milestone,state
Capturar especialmente as seções ## Acceptance criteria, ## What to build, ## Camadas tocadas (template do /to-issues).
3. Coletar diff
git fetch origin
git diff "origin/$BASE..HEAD" --stat
git diff "origin/$BASE..HEAD"
Se diff > 2000 linhas: avisar que a revisão única ficará menos precisa e sugerir revisar por subdiretório ou por commit. Não dispare sub-agents.
4. Coletar contexto da stack
Ler do projeto, quando existirem:
AGENTS.md(boost) — pacotes e versõesCLAUDE.md— convenções do projetoCONTEXT.md— vocabulário de domínio
5. Revisar em uma passagem
Percorra o diff uma vez, agrupando achados nestas dimensões:
Spec
- Cada acceptance criterion das issues fechadas está entregue?
- O PR implementa o
What to buildsem desviar para outro escopo? - Há scope creep que deveria virar PR separada?
- O body do PR justifica qualquer desvio relevante?
Laravel
- N+1 provável, queries em loop, eager loading ausente
- Validação no lugar errado; Form Request ausente quando o fluxo exige
- Autorização ausente ou inconsistente com Policy
- Uso indevido de container, service locator ou facades em camada errada
- Migration perigosa, irreversível, sem defaults ou com risco de dados
- Debug artifacts (
dd,dump, logs ruidosos, flags temporárias)
Livewire / Flux / Alpine
- Estado duplicado entre Livewire e Alpine
wire:modelsem modifier apropriado para Livewire 4wire:keyausente em listas dinâmicas- Flux substituível por HTML cru nos controles principais
- A11y impeditiva: label ausente, foco quebrado, modal inacessível, contraste insuficiente
- Layout ou estado visual incoerente com o fluxo do usuário
Pest
- Teste acopla em implementação em vez de comportamento
- Assertion fraca que passaria mesmo com bug crítico
- Fake/mock mascarando integração que a issue exige validar
- Falta teste para blocker identificado no spec
- Uso não idiomático de factories, datasets, helpers Laravel ou Livewire test
6. Consolidar
Monte resposta única:
# Review PR #<N>: "<título>"
`<branch>` → `<base>` · `<files> arquivos · +<adds>/-<dels> linhas`
Fechando: #<I1>, #<I2>
## BLOCKERS
| # | Dimensão | Arquivo | Achado |
|---|---|---|---|
| 1 | Spec | — | Issue #18 acceptance criteria 3 ("notifica autor por e-mail") não foi entregue |
| 2 | Laravel | `app/Actions/Foo.php:42` | N+1 provável ao carregar comentários dentro do loop |
(Se vazio: "Nenhum blocker encontrado.")
## NITS
<achados não bloqueantes>
## NICE-TO-HAVE
<melhorias futuras>
## Disposition Queue
| Achado | Disposição | Próximo passo |
|---|---|---|
| Spec #18 missing e-mail notification | ACCEPT_NOW | Nova slice TDD: teste de Notification fake + implementação |
| PR body sem screenshot | SPLIT_FOLLOW_UP | Não bloqueia merge; anexar se usuário pedir |
| Sugestão de extrair service | REJECT_FALSE_POSITIVE | Preferência sem risco neste diff |
## Spec Compliance
### Issue #18 — "Comentários em projeto"
**Acceptance criteria:**
- [x] Membro do projeto pode adicionar comentário — entregue
- [x] Comentário é exibido em ordem cronológica — entregue
- [ ] Notifica autor do projeto por e-mail — ausente
- [x] Validação de body vazio — entregue
**Veredicto:** PR cumpre 3/4 critérios. Notificação é blocker para fechar a issue.
7. Sugestões pós-review
- Para cada BLOCKER, proponha uma disposição:
ACCEPT_NOW,SPLIT_FOLLOW_UP,DOC_JUSTIFY, ouREJECT_FALSE_POSITIVE. - Se há BLOCKERS aceitos → "Resolva esses antes de mergear", listando o menor teste/gate a rerodar.
- Se há BLOCKERS apenas de Spec → "PR está tecnicamente OK mas incompleto vs issue. Decisão: terminar a slice OU dividir issue/PR para entregar o resto separadamente."
- Se só há NIT/NICE-TO-HAVE → "Pode mergear. Não precisa voltar ao TDD; abra follow-up se quiser preservar a sugestão."
- Se detectar padrão recorrente → "Considere virar guideline em
CLAUDE.md."
8. Rerun controlado
Depois de correções, não reexecute o review completo automaticamente. Rode:
- o teste/gate local que cobre o patch;
- Pint se PHP/Blade mudou;
- uma revisão focada apenas no BLOCKER endereçado, quando a confirmação humana não for suficiente.
Pare quando não houver BLOCKER com disposição ACCEPT_NOW pendente. Não bloqueie merge por NIT/NICE.
Notas
- Não modifica nenhum arquivo. Leitura pura — comenta no terminal, não no GitHub.
- Não posta comentários no PR. Output é local. Usuário decide o que vira comment ou commit.
- Não dispara sub-agents. Esta skill foi desenhada para reduzir consumo de token.
- Funciona sem PR aberta? Não. Para revisar branch sem PR, abra com
/open-pr --draftantes ou compare manualmente comgit diff. - Issues sem acceptance criteria? Compare com
What to buildem prosa — menos preciso, mas ainda útil.