Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Writes Laravel PHP — Eloquent, Artisan controllers, FormRequests, jobs, events, policies, providers. For Symfony / Doctrine use `symfony-workflow`. For framework-free PHP use `php-coder`.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Use this skill for all Laravel-specific code generation and editing tasks, especially when working with:
This skill extends the base php-coder skill and applies Laravel conventions on top of the project's general PHP rules.
A DEPENDENCY PROVES A LIBRARY IS AVAILABLE. ONLY THE ENTRY POINT AND THE
ROUTER PROVE WHICH APPLICATION SHAPE IS RUNNING.
`illuminate/*` PACKAGES WITH NO SKELETON MARKER IS A THIRD STATE, AND THIS SKILL
DOES NOT APPLY TO IT.
Laravel ships its ORM, container, collections and HTTP layer as independently installable packages, usable with no framework present — a published distribution model, not one consumer's arrangement. An application built that way has a custom entry point and a custom router. Routing it here offers a CLI that does not exist, a request-validation primitive that is not wired, and a routes file that was never there: every suggestion confidently wrong, and the reason visible only from the entry point.
The probe set, and its cost. A fixed set of filesystem existence checks plus one manifest read — no directory walk, no content scan, and never re-derived per session. Any ONE marker present means the framework is real:
| Probe | Meaning |
|---|---|
artisan | the console entry point the skeleton writes |
config/app.php | the skeleton's bootstrap config |
bootstrap/app.php | the application bootstrap |
illuminate/* in composer.json with none of those markers is
components-without-the-framework. Say so and route away from this skill rather
than answering as though the framework were there.
Implemented deterministically in src/install/detect_php_shape.ts
(detectPhpShape), whose PROBE_PATHS is this table and whose verdict names
what a wrong route would have offered.
→ First apply the php-coder skill — it handles project docs, module docs, patterns, and quality tools.
Then add these Laravel-specific checks:
artisan exists.app/Modules/), or domain folders.routes/web.phproutes/api.phpenv() outside config files.eloquent skill.'type.daily_report' => 'Daily Report'.
Nested arrays ('type' => ['daily_report' => …]) are forbidden: they break
key referencing and make a one-line addition a nested diff.__('report.type.daily_report'), __('email.report.created.subject', ['number' => $number]).lang/en/ without
lang/de/ is a bug, not a TODO — the app ships to both audiences.env() outside config files.When generating Laravel code:
| Symptom | Root cause | Fix |
|---|---|---|
| A list endpoint fires hundreds of queries / is slow under load | N+1: a relation is accessed inside a loop without eager loading | Eager-load with with('relation'); enable Model::preventLazyLoading() in non-prod to catch it early |
| Config changes / new env vars have no effect in production | config:cache cached the old config, and env() returns null once config is cached | Read env only in config/*, use config() elsewhere; re-run config:cache on deploy |
| A form field silently isn't saved | The attribute isn't in $fillable and mass-assignment drops it | Add it to $fillable (or set it explicitly); never blanket-$guarded = [] on user input |
| Queued jobs never run / run with stale code | No worker is running, or workers weren't restarted after a deploy so they hold the old code in memory | Run/supervise queue:work; queue:restart on every deploy |
| Timestamps or times are off by hours | Comparing/formatting a Carbon instance without honoring config('app.timezone') vs the DB's UTC storage | Store UTC; convert for display; set the app timezone explicitly, don't assume server local time |
env() only works in config files — use config() everywhere else.Route::resource() with single-action controllers — pick the project's convention.Laravel-specific audit list (carved out of the generic security-audit
skill, 2026-07-12):
env() in non-config files (leaks in debug mode)APP_DEBUG=true) in production$fillable on models used with request()->all()Route::any() exposing unintended HTTP methodsまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
日本語の概要は準備中です。原文の説明を表示しています。
Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.
日本語の概要は準備中です。原文の説明を表示しています。
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.
日本語の概要は準備中です。原文の説明を表示しています。
Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.
日本語の概要は準備中です。原文の説明を表示しています。