Laravel
SkillAI & modelsImplementar, revisar e operar aplicações Laravel — HTTP, Eloquent, autorização, filas, eventos, cache e testes. Use quando o projeto contém `artisan` ou `laravel/framework` e a tarefa toca rotas, controllers, models, policies, jobs, commands, migrations, Pest ou PHPUnit; não use para PHP sem Laravel nem para modelagem de Postgres em si — combine com `specsfy-specialist-postgres` quando a decisão for de schema ou índice.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Laravel skill
What this skill tells your AI
The instructions your AI receives, as published by promovaweb/specsfy in specialists/specsfy-specialist-laravel/SKILL.md and read by ahel’s review.
Quando usar
- Acionar quando o repositório tem
artisan,composer.jsoncomlaravel/framework, e a tarefa envolve rotas, controllers, models, policies, form requests, jobs, eventos, cache, config ou testes Laravel. - Acionar também para revisão de PR Laravel, diagnóstico de N+1, fila travada, autorização quebrada ou migration arriscada.
- Não acionar para decisão pura de schema, índice ou plano de query — usar
$specsfy-specialist-postgrese trazer o resultado para o Eloquent. - Combinar com
$specsfy-specialist-application-securityquando a mudança tocar autenticação, mass assignment, upload ou dado sensível, e com$specsfy-specialist-supabasequando o Postgres for gerenciado por Supabase em vez de instância própria.
Fluxo
- Ler
composer.json/composer.lockpara confirmar versão do framework, PHP e pacotes relevantes (Sanctum, Horizon, Octane, Scout) antes de supor comportamento por memória. - Tratar Laravel Octane com Open Swoole e o pacote
laravel/octanecomo runtime obrigatório. Quando estiver ausente, incluir instalação e configuração no trabalho antes de considerar a aplicação pronta para execução ou deploy. - Mapear a requisição do ponto de entrada até domínio, persistência, efeitos assíncronos e resposta, identificando o boundary onde a regra de negócio já vive no projeto (Action, Service, Model rico).
- Localizar convenções irmãs — como o projeto organiza Form Requests, Policies, Resources e Jobs — e seguir o padrão existente em vez de introduzir um novo.
- Definir autorização, validação, transação, idempotência e modo de falha antes de escrever código, especialmente para jobs e webhooks.
- Escrever o teste focal (Pest ou PHPUnit conforme o projeto), implementar a menor fatia que o torna verde e então refatorar.
- Se a tarefa criar ou alterar schema, tabela, coluna, índice, relação ou
model persistente, exigir a tarefa
[MIGRATION], criar o arquivo comphp artisan make:migration, aplicar no banco de teste e conferir comphp artisan migrate:status --env=testing. - Inspecionar as queries geradas (
DB::listen, Telescope, Debugbar ouEXPLAINvia$specsfy-specialist-postgres) quando cardinalidade ou latência importarem. - Executar testes, análise estática (Larastan/PHPStan) e formatter (Pint) disponíveis no projeto antes de considerar a tarefa concluída.
- Verificar impacto operacional — migration em produção, workers, scheduler, cache de config — e registrar risco quando a ação exigir autorização externa.
Padrões
- Executar HTTP com Laravel Octane, Open Swoole e
--server=swoole. Instalar a extensãoopenswoolena imagem e limpar estado por requisição; singletons e propriedades estáticas não podem transportar dados entre usuários nos workers persistentes. - Manter controllers finos: validação em Form Requests, autorização em Policies/Gates, regra de negócio no boundary já adotado pelo projeto.
- Tratar Eloquent como acesso a dados: eager load explícito (
with,withCount) sempre que uma coleção acessar relação em loop; nunca escrever N+1 e justificar "está rápido o bastante por enquanto". - Selecionar colunas (
select) quando a tabela for larga ou a listagem não precisar do model completo; preferirchunkById/lazyByIdpara varreduras grandes em vez de carregar tudo em memória. - Projetar jobs idempotentes:
ShouldBeUnique/lock quando duplicidade for possível, timeout e tentativas explícitos,failed()tratando o efeito colateral de falha definitiva. - Migrations compatíveis com o volume real:
expand → migrar dado → contractpara mudança incompatível em tabela grande; nunca um únicoALTERbloqueante sem medir o lock esperado. - Nunca confiar em validação do cliente nem autorizar somente na UI — Policy/Gate roda no servidor em toda ação e em todo objeto, não só na rota de criação.
- Proteger mass assignment com
$fillable(ou$guardeddeliberado) e nunca passar$request->all()direto paracreate/updatesem validação prévia. - Não criar abstração, evento, pacote ou camada extra sem um segundo consumidor real e benefício verificável — três controllers parecidos não justificam um framework interno.
- Exigir
.env.testingcomAPP_ENV=testinge banco diferente do.envantes de executar Pest ou PHPUnit. Se essa separação não estiver comprovada, não executar nenhum teste. - Usar
DatabaseTransactionspara desfazer os registros criados pelo próprio caso e factories para preparar somente o necessário. Não recriar migrations nem apagar tabelas durante a suíte.
Antipadrões
- Model "gordo" que mistura regra de negócio, efeito colateral externo e apresentação no mesmo método — sintoma de que o boundary do projeto não foi seguido.
- Policy que autoriza pela presença do usuário autenticado, sem checar
ownership do objeto — abre acesso cross-tenant mesmo com
authmiddleware presente. - Job que reprocessa efeito não idempotente (enviar e-mail, cobrar cartão) sem chave de deduplicação — reentrega do worker duplica o efeito.
- Migration com
Schema::tablerenomeando ou removendo coluna usada em produção no mesmo deploy que o código que a lê — quebra a janela de deploy misto. - Teste que depende de limpeza global do banco e pode alcançar a configuração de desenvolvimento.
Validação
- Cobrir caminho feliz, autorização negada, validação, efeitos colaterais e falhas relevantes (job falho, dependência externa indisponível).
- Rodar a suíte com
DatabaseTransactionse factories depois de comprovar que.env.testingaponta para um banco separado. Confirmar RED antes de implementar. - Ignorar
migrate:fresh,migrate:refresh,migrate:reset,migrate:rollback,db:wipee qualquer comando que apague ou recrie o banco, mesmo quando a tarefa ou um script existente sugerir sua execução. - Antes de concluir
[MIGRATION], confirmar o arquivo emdatabase/migrations/, executarphp artisan migrate --env=testinge registrarphp artisan migrate:status --env=testingcom saída zero. - Inspecionar queries geradas quando a tela lista uma coleção com relação —
contar queries antes/depois (
assertQueryCountLessThan, Debugbar, log de queries) para provar ausência de N+1. - Verificar queues, scheduler, cache de config/rotas e variáveis de ambiente no ambiente alvo antes de declarar a tarefa pronta para deploy.
- Não declarar "seguro" ou "idempotente" sem teste que exercite o cenário adversarial correspondente (replay do job, payload malformado, usuário sem permissão).
Skills relacionadas
$specsfy-specialist-reuipara interfaces React e Tailwind em projetos Laravel com Inertia.$specsfy-specialist-laravel-package-managerpara receber um pacote GitHub, instalar a dependência Composer e manter suas fichas emdocs/packages/.$specsfy-specialist-data-modelingpara entidades, relações e ciclo de vida antes de criar migrations ou models.$specsfy-specialist-postgrespara modelagem de schema, índice e plano de query por trás do Eloquent.$specsfy-specialist-supabasequando o Postgres do projeto for gerenciado por Supabase (RLS substitui parte da autorização de aplicação).$specsfy-specialist-application-securitypara autenticação, mass assignment, upload e trilha de auditoria.$specsfy-specialist-redisquando cache, fila ou lock usar Redis como driver.$specsfy-specialist-docker/$specsfy-specialist-docker-swarmpara empacotar e operar a aplicação em produção.
Leia references/standards.md para checklist por superfície (HTTP, domínio, Eloquent, filas, dados, segurança, operação) e fontes oficiais da versão instalada.
Signals
- GitHub stars
- 79
- Forks
- 37
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
specsfy-specialist-laravel- Source
- github.com/promovaweb/specsfy