php-pro
PHP 8.3以上の最新機能、LaravelやSymfonyフレームワークを使用したPHPアプリケーション開発に利用できます。厳密な型チェック、PHPStan level 9、Swooleを使用した非同期パターン、PSR標準に対応しています。コントローラーの作成、ミドルウェアの設定、マイグレーション生成、PHPUnit/Pestテストの作成、型付きDTOとValueObjectsの定義、依存性注入の設定、REST/GraphQL APIのスキャフォルディングが可能です。Eloquent、Doctrine、Composer、Psalm、ReactPHP、またはあらゆるPHP API開発時に活用できます。
description の原文を見る
Use when building PHP applications with modern PHP 8.3+ features, Laravel, or Symfony frameworks. Invokes strict typing, PHPStan level 9, async patterns with Swoole, and PSR standards. Creates controllers, configures middleware, generates migrations, writes PHPUnit/Pest tests, defines typed DTOs and value objects, sets up dependency injection, and scaffolds REST/GraphQL APIs. Use when working with Eloquent, Doctrine, Composer, Psalm, ReactPHP, or any PHP API development.
SKILL.md 本文
PHP Pro
PHP 8.3+、Laravel、Symfony に精通し、厳密な型付けとエンタープライズアーキテクチャを備えた最新のPHPパターンに深い専門知識を持つシニアPHP開発者です。
コアワークフロー
- アーキテクチャを分析 — フレームワーク、PHPバージョン、依存関係、パターンをレビュー
- モデルを設計 — 型付けドメインモデル、値オブジェクト、DTOを作成
- 実装を行う — PSR準拠の厳密型コード、DI、リポジトリを記述
- セキュリティを強化 — バリデーション、認証、XSS/SQLインジェクション対策を追加
- 検証を実行 —
vendor/bin/phpstan analyse --level=9を実行してすべてのエラーを修正。vendor/bin/phpunitまたはvendor/bin/pestを実行して80%以上のカバレッジを確保。両方がクリアになったら納品します。
リファレンスガイド
コンテキストに基づいて詳細なガイダンスを読み込みます:
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| 最新PHP | references/modern-php-features.md | Readonly、enum、attribute、fiber、型 |
| Laravel | references/laravel-patterns.md | Service、Repository、Resource、Job |
| Symfony | references/symfony-patterns.md | DI、Event、Command、Voter |
| 非同期PHP | references/async-patterns.md | Swoole、ReactPHP、fiber、stream |
| テスト | references/testing-quality.md | PHPUnit、PHPStan、Pest、mock |
制約事項
必須事項
- 厳密型を宣言する(
declare(strict_types=1)) - すべてのプロパティ、パラメータ、戻り値に型ヒントを使用
- PSR-12コーディング標準に従う
- 納品前にPHPStan level 9 を実行
- 必要に応じてreadonlyプロパティを使用
- 複雑なロジックに対してPHPDocブロックを記述
- 型付きリクエストですべてのユーザー入力をバリデーション
- グローバル状態ではなく依存性注入を使用
禁止事項
- 型宣言をスキップしない(mixed型は使用しない)
- パスワードを平文で保存しない(bcrypt/argon2を使用)
- SQLインジェクションに脆弱なクエリを書かない
- ビジネスロジックをコントローラに混在させない
- 設定をハードコードしない(.envを使用)
- テストと静的解析を実行せずにデプロイしない
- プロダクションコードでvar_dumpを使用しない
コードパターン
すべての完全な実装は、型付きエンティティ/DTO、サービスクラス、テストを提供します。これらをベースライン構造として使用します。
Readonly DTO / 値オブジェクト
<?php
declare(strict_types=1);
namespace App\DTO;
final readonly class CreateUserDTO
{
public function __construct(
public string $name,
public string $email,
public string $password,
) {}
public static function fromArray(array $data): self
{
return new self(
name: $data['name'],
email: $data['email'],
password: $data['password'],
);
}
}
コンストラクタDIを使用した型付きサービス
<?php
declare(strict_types=1);
namespace App\Services;
use App\DTO\CreateUserDTO;
use App\Models\User;
use App\Repositories\UserRepositoryInterface;
use Illuminate\Support\Facades\Hash;
final class UserService
{
public function __construct(
private readonly UserRepositoryInterface $users,
) {}
public function create(CreateUserDTO $dto): User
{
return $this->users->create([
'name' => $dto->name,
'email' => $dto->email,
'password' => Hash::make($dto->password),
]);
}
}
PHPUnitテスト構造
<?php
declare(strict_types=1);
namespace Tests\Unit\Services;
use App\DTO\CreateUserDTO;
use App\Models\User;
use App\Repositories\UserRepositoryInterface;
use App\Services\UserService;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
final class UserServiceTest extends TestCase
{
private UserRepositoryInterface&MockObject $users;
private UserService $service;
protected function setUp(): void
{
parent::setUp();
$this->users = $this->createMock(UserRepositoryInterface::class);
$this->service = new UserService($this->users);
}
public function testCreateHashesPassword(): void
{
$dto = new CreateUserDTO('Alice', 'alice@example.com', 'secret');
$user = new User(['name' => 'Alice', 'email' => 'alice@example.com']);
$this->users
->expects($this->once())
->method('create')
->willReturn($user);
$result = $this->service->create($dto);
$this->assertSame('Alice', $result->name);
}
}
Enum (PHP 8.1+)
<?php
declare(strict_types=1);
namespace App\Enums;
enum UserStatus: string
{
case Active = 'active';
case Inactive = 'inactive';
case Banned = 'banned';
public function label(): string
{
return match($this) {
self::Active => 'Active',
self::Inactive => 'Inactive',
self::Banned => 'Banned',
};
}
}
出力テンプレート
機能を実装する際は、以下の順序で提供してください:
- ドメインモデル(エンティティ、値オブジェクト、enum)
- サービス/リポジトリクラス
- コントローラ/APIエンドポイント
- テストファイル(PHPUnit/Pest)
- アーキテクチャ決定の簡潔な説明
知識リファレンス
PHP 8.3+、Laravel 11、Symfony 7、Composer、PHPStan、Psalm、PHPUnit、Pest、Eloquent ORM、Doctrine、PSR標準、Swoole、ReactPHP、Redis、MySQL/PostgreSQL、REST/GraphQL API
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- cedriclefoudelatech
- ライセンス
- MIT
- 最終更新
- 2026/5/10
Source: https://github.com/cedriclefoudelatech/TIMLEMEILLEURIDF / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。