wp-phpstan

Konfigurasi PHPStan, perbaikan error, dan pengelolaan baseline untuk proyek WordPress. Menangani pola pengetikan khusus WordPress: endpoint REST dengan WP_REST_Request, callback hook dengan tipe @param yang akurat, hasil database, dan argumen pekerjaan Action Scheduler. Mengelola resolusi kelas plugin/tema pihak ketiga melalui stub (php-stubs/woocommerce-stubs, php-stubs/acf-pro-stubs) dan pola abaikan yang ditargetkan. Menyediakan penemuan PHPStan yang deterministik, validasi konfigurasi, baseline...

npx skills add https://github.com/wordpress/agent-skills --skill wp-phpstan

WP PHPStan

When to use

Use this skill when working on PHPStan in a WordPress codebase, for example:

  • setting up or updating phpstan.neon / phpstan.neon.dist
  • generating or updating phpstan-baseline.neon
  • fixing PHPStan errors via WordPress-friendly PHPDoc (REST requests, hooks, query results)
  • handling third-party plugin/theme classes safely (stubs/autoload/targeted ignores)

Inputs required

  • wp-project-triage output (run first if you haven't)
  • Whether adding/updating Composer dev dependencies is allowed (stubs).
  • Whether changing the baseline is allowed for this task.

Procedure

0) Discover PHPStan entrypoints (deterministic)

  1. Inspect PHPStan setup (config, baseline, scripts):
    • node skills/wp-phpstan/scripts/phpstan_inspect.mjs

Prefer the repo’s existing composer script (e.g. composer run phpstan) when present.

1) Ensure WordPress core stubs are loaded

szepeviktor/phpstan-wordpress or php-stubs/wordpress-stubs are effectively required for most WordPress plugin/theme repos. Without it, expect a high volume of errors about unknown WordPress core functions.

  • Confirm the package is installed (see composer.dependencies in the inspect report).
  • Ensure the PHPStan config references the stubs (see references/third-party-classes.md).

2) Ensure a sane phpstan.neon for WordPress projects

  • Keep paths focused on first-party code (plugin/theme directories).
  • Exclude generated and vendored code (vendor/, node_modules/, build artifacts, tests unless explicitly analyzed).
  • Keep ignoreErrors entries narrow and documented.

See:

  • references/configuration.md

3) Fix errors with WordPress-specific typing (preferred)

Prefer correcting types over ignoring errors. Common WP patterns that need help:

  • REST endpoints: type request parameters using WP_REST_Request<...>
  • Hook callbacks: add accurate @param types for callback args
  • Database results and iterables: use array shapes or object shapes for query results
  • Action Scheduler: type $args array shapes for job callbacks

See:

  • references/wordpress-annotations.md

4) Handle third-party plugin/theme classes (only when needed)

When integrating with plugins/themes not present in the analysis environment:

  • First, confirm the dependency is real (installed/required).
  • Prefer plugin-specific stubs already used in the repo (common examples: php-stubs/woocommerce-stubs, php-stubs/acf-pro-stubs).
  • If PHPStan still cannot resolve classes, add targeted ignoreErrors patterns for the specific vendor prefix.

See:

  • references/third-party-classes.md

5) Baseline management (use as a migration tool, not a trash bin)

  • Generate a baseline once for legacy code, then reduce it over time.
  • Do not “baseline” newly introduced errors.

See:

  • references/configuration.md

Verification

  • Run PHPStan using the discovered command (composer run ... or vendor/bin/phpstan analyse).
  • Confirm the baseline file (if used) is included and didn’t grow unexpectedly.
  • Re-run after changing ignoreErrors to ensure patterns are not masking unrelated issues.

Failure modes / debugging

  • “Class not found”:
    • confirm autoloading/stubs, or add a narrow ignore pattern
  • Huge error counts after enabling PHPStan:
    • reduce paths, add excludePaths, start at a lower level, then ratchet up
  • Inconsistent types around hooks / REST params:
    • add explicit PHPDoc (see references) rather than runtime guards

Escalation

  • If a type depends on a third-party plugin API you can’t confirm, ask for the dependency version or source before inventing types.
  • If fixing requires adding new Composer dependencies (stubs/extensions), confirm it with the user first.

Lebih banyak skill dari wordpress

blueprint
wordpress
Gunakan saat membuat, mengedit, atau meninjau file JSON blueprint WordPress Playground. Dipicu oleh penyebutan blueprint, konfigurasi playground, atau permintaan…
official
wordpress-router
wordpress
Mengklasifikasikan basis kode WordPress dan merutekan ke alur kerja yang benar untuk plugin, tema, blok, dan pemeriksaan inti. Menjalankan triase proyek otomatis untuk mengidentifikasi jenis repositori (plugin, tema, tema blok, blok Gutenberg, inti WP) dan perkakas yang tersedia. Menghasilkan hasil klasifikasi dan perutean pohon keputusan ke keterampilan khusus domain berdasarkan niat pengguna dan jenis proyek. Membutuhkan akses root repositori dan operasi sistem file bash/Node; beberapa alur kerja memerlukan WP-CLI. Menargetkan WordPress 6.9+ dengan PHP 7.2.24+;...
official
wp-abilities-api
wordpress
Pendaftaran API Kemampuan WordPress, eksposur REST, dan konsumsi sisi klien untuk WordPress 6.9+. Daftarkan kemampuan dan kategori dalam PHP menggunakan wp_register_ability() dan wp_register_ability_category() dengan ID stabil, label, dan metadata. Ekspos kemampuan ke klien melalui titik akhir REST /wp-json/wp-abilities/v1/ dengan mengatur meta.show_in_rest: true. Konsumsi kemampuan dalam JavaScript menggunakan paket @wordpress/abilities untuk akses sisi klien dan pemeriksaan izin. Membutuhkan WordPress 6.9+...
official
wp-abilities-audit
wordpress
Audit permukaan REST plugin WordPress dan hasilkan dokumen audit terstandarisasi yang mengusulkan pendaftaran Abilities API. Menghasilkan dokumen markdown dengan YAML…
official
wp-abilities-verify
wordpress
Verifikasi registrasi Abilities API plugin WordPress: enumerasi kemampuan, periksa bahwa perilaku callback sesuai dengan klaim setiap anotasi (yang adversarial…
official
wp-block-development
wordpress
Pengembangan blok WordPress untuk Gutenberg: metadata, registrasi, rendering, dan alur kerja build. Mencakup pembuatan blok, konfigurasi block.json, rendering statis vs. dinamis, dan registrasi PHP sisi server dengan register_block_type_from_metadata(). Menerapkan apiVersion: 3 untuk kompatibilitas WordPress 6.9+, termasuk dukungan editor iframe dan isolasi gaya. Menangani serialisasi atribut, depresiasi/migrasi untuk mencegah kesalahan "Blok tidak valid", dan komposisi blok dalam. Termasuk...
official
wp-block-themes
wordpress
Pengembangan tema blok WordPress: theme.json, template, pola, dan pemecahan masalah Site Editor. Mencakup pengeditan theme.json (prasetel, pengaturan, gaya per blok), template dan bagian template, pola, serta variasi gaya di seluruh WordPress 6.9+. Termasuk skrip triase untuk mendeteksi akar tema dan struktur tema blok, ditambah prosedur terpandu untuk membuat tema baru atau mengonversi tema klasik. Menyediakan alur kerja debugging untuk masalah hierarki gaya, penggantian kustomisasi pengguna, dan Site...
official
wp-interactivity-api
wordpress
Gunakan saat membangun atau men-debug fitur WordPress Interactivity API (arahan data-wp-*, @wordpress/interactivity store/state/actions, block viewScriptModule…
official