mcpField
P
php-modernization

php-modernization

github.com/netresearch開発55438 回インストール3 日前に更新
リポジトリ

php-modernization について

エージェント向けのPHPモダナイゼーションスキルです。プロジェクト調査、検出事項の確認、変更適用前のdry-run実行という段階的な手順を備えています。PHPのバージョン、静的解析、フレームワーク、テスト、移行の安全性に関する参照情報も提供します。

主な機能

  1. 01プロジェクトの調査と概要レポート
  2. 02検出事項ごとの詳細チェック
  3. 03dry-runによるモダナイゼーション手順
  4. 04PHPとフレームワークの参照情報
  5. 05移行の安全性を守るガードレール
  6. 06コードとテストのチェックリスト

活用シーン

  1. 01PHPプロジェクトの近代化要件の評価
  2. 02特定の検出事項の調査
  3. 03PHPバージョンやフレームワークの更新計画
  4. 04適用前の移行変更のレビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/netresearch/php-modernization-skill --skill php-modernization

インストール後、Claude Code で/php-modernizationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

checkpoints.yaml
references/
adapter-registry-pattern.md
api-platform-edges.md
composer-package-metadata.md
contracts-and-invariants.md
core-rules.md
doctrine-modernization-edges.md
immutability-boundaries.md
lexing-php-across-versions.md
migration-strategies.md
multi-agent-pitfalls.md
multi-version-adapters.md
mutation-testing.md
php-8.4.md
php-8.5.md
php-cs-fixer-deprecations.md
php8-features.md
phpstan-compliance.md
phpunit-modernization.md
psr-per-compliance.md
psr15-middleware-architecture.md
public-api-inventory.md
reading-php-config-safely.md
request-dtos.md
static-analysis-tools.md
symfony-patterns.md
type-safety.md
scripts/
_common.py
introspect.py
modernize_loop.py

詳細

PHP のモダナイゼーション

エージェントの契約

  1. 検出: uv run ${CLAUDE_SKILL_DIR}/scripts/introspect.py(低コスト)、または verify_php_project.py --summary(完全な情報、agent_actions[] を含む)。
  2. 詳細確認: 検出項目ごとに ... --check PM-XX を実行します。3 件を超える項目をトリアージする場合は、完全な出力を確認します。
  3. 適用: uv run ${CLAUDE_SKILL_DIR}/scripts/modernize_loop.py --mode dry-run を実行します。適用前にトランスクリプトを確認します。
  4. リファレンス: 必要に応じて読み込みます。事前に読み込まないでください。

リファレンスの参照先

必要な情報読むファイル
PHP 8.0-8.3 のベースラインreferences/php8-features.md
PHP 8.4references/php-8.4.md
PHP 8.5references/php-8.5.md
PSR / PER-CSreferences/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, references/composer-package-metadata.md
Symfony のパターンreferences/symfony-patterns.md
PSR-15 ミドルウェアreferences/psr15-middleware-architecture.md
Doctrine の注意点references/doctrine-modernization-edges.md
API Platformreferences/api-platform-edges.md
不変性references/immutability-boundaries.md
コントラクトと不変条件references/contracts-and-invariants.md
ミューテーションテストreferences/mutation-testing.md
バージョンをまたいだ PHP のトークン解析references/lexing-php-across-versions.md
移行計画references/migration-strategies.md
コンシューマーと照合する公開 API の一覧references/public-api-inventory.md
PHPUnit 12→13、モックとスタブreferences/phpunit-modernization.md
複数エージェントへのディスパッチに伴う危険references/multi-agent-pitfalls.md
PHP の設定ファイルを実行せずに読む方法references/reading-php-config-safely.md

厳守すべきガードレール

  • Doctrine のエンティティやマップ済みスーパークラスに readonly を適用しないでください(埋め込み可能クラスについては references/doctrine-modernization-edges.md を参照)。
  • --dry-run なしで Rector を実行しないでください。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)

コメント