wp-phpstan

โดย wordpress

การกำหนดค่า PHPStan การแก้ไขข้อผิดพลาด และการจัดการ baseline สำหรับโปรเจกต์ WordPress จัดการรูปแบบการพิมพ์เฉพาะของ WordPress: จุดสิ้นสุด REST ด้วย WP_REST_Request, callback hook ด้วยประเภท @param ที่แม่นยำ, ผลลัพธ์ฐานข้อมูล และอาร์กิวเมนต์งานของ Action Scheduler จัดการการแก้ไขคลาสของปลั๊กอิน/ธีมของบุคคลที่สามผ่าน stubs (php-stubs/woocommerce-stubs, php-stubs/acf-pro-stubs) และรูปแบบการละเว้นที่กำหนดเป้าหมาย ให้การค้นพบ PHPStan ที่แน่นอน การตรวจสอบความถูกต้องของการกำหนดค่า 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.

Skills เพิ่มเติมจาก wordpress

blueprint
wordpress
ใช้เมื่อสร้าง แก้ไข หรือตรวจสอบไฟล์ JSON blueprint ของ WordPress Playground ทำงานเมื่อมีการกล่าวถึง blueprints, การกำหนดค่า playground หรือคำขอ…
official
wordpress-router
wordpress
จัดประเภทโค้ดเบส WordPress และกำหนดเส้นทางไปยังเวิร์กโฟลว์ที่ถูกต้องสำหรับปลั๊กอิน ธีม บล็อก และการเช็คเอาต์แกนกลาง ดำเนินการคัดแยกโปรเจกต์อัตโนมัติเพื่อระบุประเภทของรีโพสิทอรี (ปลั๊กอิน ธีม ธีมบล็อก บล็อก Gutenberg แกนกลาง WP) และเครื่องมือที่มีอยู่ ส่งออกผลลัพธ์การจัดประเภทและการตัดสินใจเส้นทางไปยังสกิลเฉพาะโดเมนตามความตั้งใจของผู้ใช้และประเภทของโปรเจกต์ ต้องการสิทธิ์เข้าถึงรากของรีโพสิทอรีและการดำเนินการระบบไฟล์ bash/Node บางเวิร์กโฟลว์ต้องใช้ WP-CLI กำหนดเป้าหมาย WordPress 6.9+ พร้อม PHP 7.2.24+;...
official
wp-abilities-api
wordpress
การลงทะเบียน WordPress Abilities API, การเปิดเผยผ่าน REST, และการใช้งานฝั่งไคลเอ็นต์สำหรับ WordPress 6.9 ขึ้นไป ลงทะเบียนความสามารถและหมวดหมู่ใน PHP โดยใช้ wp_register_ability() และ wp_register_ability_category() พร้อม ID, ป้ายกำกับ, และข้อมูลเมตาที่เสถียร เปิดเผยความสามารถให้กับไคลเอ็นต์ผ่าน REST endpoints /wp-json/wp-abilities/v1/ โดยตั้งค่า meta.show_in_rest: true ใช้งานความสามารถใน JavaScript โดยใช้แพ็คเกจ @wordpress/abilities สำหรับการเข้าถึงฝั่งไคลเอ็นต์และการตรวจสอบสิทธิ์ ต้องใช้ WordPress 6.9 ขึ้นไป...
official
wp-abilities-audit
wordpress
ตรวจสอบส่วนติดต่อ REST ของปลั๊กอิน WordPress และสร้างเอกสารการตรวจสอบมาตรฐานที่เสนอการลงทะเบียน Abilities API สร้างเอกสาร markdown พร้อม YAML…
official
wp-abilities-verify
wordpress
ตรวจสอบการลงทะเบียน Abilities API ของปลั๊กอิน WordPress: แจกแจงความสามารถ ตรวจสอบว่าพฤติกรรมของ callback ตรงกับข้อความอ้างอิงของแต่ละคำอธิบายประกอบ (การโจมตีแบบ adversarial…)
official
wp-block-development
wordpress
การพัฒนา WordPress block สำหรับ Gutenberg: metadata, การลงทะเบียน, การเรนเดอร์ และขั้นตอนการสร้าง ครอบคลุมการสร้าง block, การกำหนดค่า block.json, การเรนเดอร์แบบ static vs dynamic และการลงทะเบียน PHP ฝั่งเซิร์ฟเวอร์ด้วย register_block_type_from_metadata() บังคับใช้ apiVersion: 3 เพื่อความเข้ากันได้กับ WordPress 6.9+ รวมถึงการรองรับ iframe editor และการแยกสไตล์ จัดการการจัดลำดับ attribute, deprecations/migrations เพื่อป้องกันข้อผิดพลาด "Invalid block" และการประกอบ inner blocks รวมถึง...
official
wp-block-themes
wordpress
การพัฒนา WordPress block theme: theme.json, templates, patterns, และการแก้ไขปัญหา Site Editor ครอบคลุมการแก้ไข theme.json (presets, settings, per-block styles), templates และ template parts, patterns, และ style variations ใน WordPress 6.9+ รวมถึงสคริปต์ triage เพื่อตรวจจับ theme roots และโครงสร้าง block theme พร้อมขั้นตอนแนะนำสำหรับการสร้างธีมใหม่หรือแปลงธีมแบบคลาสสิก ให้เวิร์กโฟลว์การดีบักสำหรับปัญหาเกี่ยวกับลำดับชั้นของสไตล์ การแทนที่การปรับแต่งของผู้ใช้ และ Site...
official
wp-interactivity-api
wordpress
ใช้เมื่อสร้างหรือดีบักฟีเจอร์ของ WordPress Interactivity API (data-wp-* directives, @wordpress/interactivity store/state/actions, block viewScriptModule…)
official