php-modernization について
エージェント向けの PHP モダナイゼーションスキルです。プロジェクトの調査、検出事項ごとの確認、ドライランによる変更手順を案内し、バージョン別資料と移行・分析・テストのガードレールを備えています。
主な機能
- 01プロジェクト調査スクリプト
- 02検出事項ごとの確認
- 03ドライランによる更新ループ
- 04PHP バージョン別資料の案内
- 05移行とテストのガードレール
活用シーン
- 01PHP プロジェクトの近代化作業の評価
- 02個別の近代化項目の確認
- 03PHP とテストスイートの安全な更新計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dirnbauer/ webconsulting-skills --skill php-modernizationインストール後、Claude Code で/php-modernizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
checkpoints.yamlreferences/adapter-registry-pattern.mdapi-platform-edges.mdcontracts-and-invariants.mdcore-rules.mddoctrine-modernization-edges.mdimmutability-boundaries.mdmigration-strategies.mdmulti-agent-pitfalls.mdmulti-version-adapters.mdmutation-testing.mdphp-8.4.mdphp-8.5.mdphp-cs-fixer-deprecations.mdphp8-features.mdphpstan-compliance.mdphpunit-modernization.mdpsr-per-compliance.mdpsr15-middleware-architecture.mdrequest-dtos.mdstatic-analysis-tools.mdsymfony-patterns.mdtype-safety.mdscripts/_common.pyintrospect.pymodernize_loop.pyverify_php_project.pyverify-php-project.shtemplates/composer-scripts.jsontemplates/github-actions/php-modernization.yml詳細
PHP のモダナイゼーション
エージェント契約
- 検出:
uv run ${CLAUDE_SKILL_DIR}/scripts/introspect.py(低コスト)、またはverify_php_project.py --summary(完全な情報。agent_actions[]を含みます)。 - 詳細確認:検出結果ごとに
... --check PM-XXを実行します。3 件を超える項目をトリアージする場合は、完全な出力を使用します。 - 適用:
uv run ${CLAUDE_SKILL_DIR}/scripts/modernize_loop.py --mode dry-runを実行します。適用前にトランスクリプトを確認します。 - リファレンス:必要に応じて読み込みます。事前に読み込まないでください。
リファレンスの参照先
| 必要な情報 | 参照先 |
|---|---|
| PHP 8.0~8.3 のベースライン | references/php8-features.md |
| PHP 8.4 | references/php-8.4.md |
| PHP 8.5 | references/php-8.5.md |
| PSR / PER-CS | references/psr-per-compliance.md |
| PHPStan の設定 | references/phpstan-compliance.md |
| 静的解析 | references/static-analysis-tools.md |
| PHP-CS-Fixer の非推奨項目 | references/php-cs-fixer-deprecations.md |
| DTO / VO / 入力 | references/type-safety.md、references/request-dtos.md |
| アダプター / レジストリー | references/adapter-registry-pattern.md |
| 複数バージョンとの互換性 | references/multi-version-adapters.md |
| Symfony のパターン | references/symfony-patterns.md |
| PSR-15 ミドルウェア | references/psr15-middleware-architecture.md |
| Doctrine の注意点 | references/doctrine-modernization-edges.md |
| API Platform | references/api-platform-edges.md |
| 不変性 | references/immutability-boundaries.md |
| 契約と不変条件 | references/contracts-and-invariants.md |
| ミューテーションテスト | references/mutation-testing.md |
| 移行計画 | references/migration-strategies.md |
| PHPUnit 12→13、モックとスタブ | references/phpunit-modernization.md |
| 複数エージェントのディスパッチに関する落とし穴 | references/multi-agent-pitfalls.md |
厳守事項
- Doctrine のエンティティまたはマップ済みスーパークラスに
readonlyを適用しないでください(埋め込み可能クラスについてはreferences/doctrine-modernization-edges.mdを参照してください)。 - Rector を
--dry-runなしで実行しないでください。vendor/bin/rectorを直接呼び出してください。Composer スクリプトのエイリアスは、設定によっては--で渡したフラグを取り除くことがあります。 - ベースラインを再生成してコミットせずに、PHPStan のレベルを上げないでください。ベースラインは縮小し、削除しないでください。
- 確認なしに、モック対象や拡張ポイントに一律で
finalを適用しないでください。 @generatedファイルや、var/cache/、vendor/、node_modules/、.Build/配下のファイルを編集しないでください。- 共有ツリーで、スコープ外のファイルに対して
git checkout --を実行しないでください。git stash/git diffを使用してください。 - vendor の変更後に、温まった PHPStan キャッシュを信用しないでください。まず
rm -rf /tmp/phpstan-* var/cache/phpstanを実行してください。 createMock→createStubの一括置換はしないでください。expects(...)->method(...)->with(...)を使う形に変更してください。
移行チェックリスト
- すべての場所で
declare(strict_types=1) -
@PER-CSを使用し、非推奨のエイリアスを使わない - PHPStan ≥9(
treatPhpDocTypesAsCertain: false)。新規の場合は 10 - レイヤー境界に PHPat を使用
- すべてのメソッドに戻り値型とパラメーター型を指定
- 配列より DTO、定数よりバックド enum
- 型ヒントに PSR インターフェースを使用
-
#[Override](8.3+)、#[SensitiveParameter](8.2+)、型付き定数(8.3+) - readonly は DTO / VO / イベントのみに適用
- プロパティフック(8.4)、
array_find/any/all(8.4)、パイプ|>(8.5) - PHPUnit 12+:スタブには
createStub、モックにはcreateMock+expectsを使用(13 ではself::any()を使わない) - Rector は
withComposerBased(symfony: true)を使用(バージョンごとのSymfonySetList::SYMFONY_*は@deprecated)
クレジットと帰属表示
このスキルは、 Netresearch DTT GmbH による素晴らしい取り組みを基にしています。
元のリポジトリー:https://github.com/netresearch/php-modernization-skill
Copyright (c) Netresearch DTT GmbH — 方法論およびベストプラクティス(MIT / CC-BY-SA-4.0)
このスキルコレクションの形成に貢献した、TYPO3 コミュニティへの寛大なオープンソース貢献に対し、Netresearch DTT GmbH に特別な感謝を捧げます。 このスキルコレクション向けに webconsulting.at が改変
コメント
Markdown 対応