Skip to content
wp-phpstan logo

WP PHPStan

wp-phpstan

Configures and manages PHPStan static analysis for WordPress plugins and themes, handling the quirks that make WordPress codebases...

SKILL.md

Full skill instructions

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.

More PHP & Laravel skills

Handles the full WordPress plugin development cycle: structure, activation hooks, Settings API, security hardening, and release prep.

2.2K 7.1K
View
wp-performance logo
PHP & Laravel

wp-performance

A backend-only profiling workflow for slow WordPress sites when you can't click around in wp-admin.

2.2K 5.3K
View
wp-rest-api logo
PHP & Laravel

wp-rest-api

This handles the full lifecycle of WordPress REST API work: registering custom routes with proper namespacing, exposing custom post...

2.2K 5.2K
View
wp-block-themes logo
PHP & Laravel

wp-block-themes

Handles the full filesystem layer of WordPress block theme development: theme.json editing for global settings and styles, template and...

2.2K 5.2K
View

This covers the full lifecycle of WordPress Gutenberg block development: scaffolding with @wordpress/create-block, managing block.json...

2.2K 4.9K
View
wordpress-router logo
PHP & Laravel

wordpress-router

Before you touch a WordPress repo, this skill figures out what you're actually working with.

2.2K 4.9K
View
wp-wpcli-and-ops logo
PHP & Laravel

wp-wpcli-and-ops

This is a guardrails-first approach to WordPress operations through WP-CLI.

2.2K 4.8K
View
wp-project-triage logo
PHP & Laravel

wp-project-triage

Before you start refactoring a WordPress repo or setting up CI, run this to get a deterministic JSON report of what you're actually...

2.2K 4.7K
View
wp-playground logo
PHP & Laravel

wp-playground

Use for WordPress Playground workflows: fast disposable WP instances in the browser or locally via @wp-playground/cli (server, run-blueprint, build-snapshot), auto-mounting plugins/themes, switching WP/PHP versions, blueprints, and debugging (Xdebug).

2.2K 4.1K
View

Coding & apps AI tools

Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View
Imagica logo
Coding & apps

Imagica

Build a no-code AI app in minutes.

Freemium
View
E
Coding & apps

Emergent.sh

An IDE for code migration from legacy to modern frameworks through coding agents.

Freemium
View
Wonder Dynamics logo
Coding & apps

Wonder Dynamics

Automate CGI animation in live-action scenes

Paid
View
M
Coding & apps

Mixo

Launch a website in seconds with AI.

Paid
View
AI Code Convert logo
Coding & apps

AI Code Convert

Streamline Your Coding Experience with AI Code Helper

Free
View