spatie-laravel-php について
コードの生成、編集、整形、リファクタリング、レビューで Spatie の Laravel・PHP 規約を適用するコーディングスキルです。参照ガイドに基づき、Laravel の慣例、PHP 標準、関連ルールの順に重視します。
主な機能
- 01Laravel・PHP のコーディング指針
- 02PSR-1、PSR-2、PSR-12 への準拠
- 03型付きプロパティと戻り値型
- 04ルートとバリデーションの規約
活用シーン
- 01Laravel のコントローラーやモデルの生成・編集
- 02PHP または Blade ファイルのレビュー
- 03ルート、マイグレーション、テストのリファクタリング
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spatie/ guidelines-skills --skill spatie-laravel-phpインストール後、Claude Code で/spatie-laravel-phpを入力して読み込まれたか確認します。
同梱ファイルreferences/spatie-laravel-php-guidelines.md
詳細
Spatie Laravel および PHP ガイドライン
概要
コードスタイルの一貫性を保ち、Laravel の標準に沿ったコードにするため、Spatie の Laravel および PHP ガイドラインを適用します。
適用するタイミング
- ユーザーが Spatie に明示的に言及していない場合も、Laravel または PHP のコーディング作業にはこのスキルを適用します。
- Laravel/PHP コードの生成、編集、フォーマット、リファクタリング、レビュー、準拠を依頼された場合は、このスキルを適用します。
.phpまたは.blade.phpファイル、ルート、コントローラー、モデル、設定、バリデーション、マイグレーション、テストを扱う場合は、このスキルを適用します。
対象範囲
- 対象:
.php、.blade.php、Laravel の規約(ルート、コントローラー、設定、バリデーション、マイグレーション、テスト)。 - 対象外:JS/TS、CSS、インフラストラクチャ、データベーススキーマ設計、Laravel 以外のフレームワーク。
ワークフロー
- 成果物(コントローラー、ルート、設定、モデル、Blade、テストなど)を特定します。
references/spatie-laravel-php-guidelines.mdを読み、関連するセクションを確認します。- まず Laravel の基本原則を適用し、次に PHP 標準、最後にセクション固有のルールを適用します。
- 既存のプロジェクト規約とルールが競合する場合は、Laravel の規約に従い、変更の一貫性を保ちます。
基本ルール(概要)
- まず Laravel の規約に従います。
- PSR-1、PSR-2、PSR-12 に従います。
- 型付きプロパティと明示的な戻り値の型(
voidを含む)を優先します。 ?stringのような短い nullable 構文を使用します。- すべてのプロパティをプロモートできる場合は、コンストラクターのプロパティプロモーションを使用します。
- トレイトは1行に1つずつ、別々の
use文で記述します。 - メソッドチェーンが複数行にわたる場合は、その後の
->もすべて改行し、1行と複数行のチェーンを混在させません。 - 早期リターンを優先し、可能な場合は
elseを避けます。 - 制御構造には必ず波括弧を使用します。
- 文字列連結より文字列補間を使用します。
- 正常系の処理は最後にします。先にエラー条件を処理します。
推奨事項と禁止事項
推奨:
- URL にはケバブケース、ルート名にはキャメルケース、ルートパラメーターにはキャメルケースを使用します。
- ルートにはタプル記法
[Controller::class, 'method']を使用します。 - コントローラーには複数形のリソース名(
PostsController)を使用します。 - バリデーションルールには配列記法を使用します。
config()ヘルパーを使用し、設定ファイル以外ではenv()を避けます。- サービスの設定は新しいファイルではなく
config/services.phpに追加します。 - 翻訳には
@langではなく__()を使用します。 - enum 値とクラス定数には PascalCase を使用します。
禁止:
- 完全な型ヒントがある場合に DocBlock を追加しないでください。
- DocBlock で完全修飾クラス名を使用しないでください。
- デフォルトで
finalやreadonlyを使用しないでください。 - 早期リターンで対応できる場合に
elseを使用しないでください。 - Blade の制御構造の後にスペースを入れないでください。
例
// Happy path last with early returns
if (! $user) {
return null;
}
if (! $user->isActive()) {
return null;
}
// Process active user...
// Short ternary
$name = $isFoo ? 'foo' : 'bar';
// Constructor property promotion
class MyClass {
public function __construct(
protected string $firstArgument,
protected string $secondArgument,
) {}
}
@if($condition)
Something
@endif
参照
references/spatie-laravel-php-guidelines.md
コメント
Markdown 対応