wp-phpstan

作者: firecrawl

在 WordPress 專案(外掛/佈景主題/網站)中設定、執行或修正 PHPStan 靜態分析時使用:phpstan.neon 設定、基準線…

npx skills add https://github.com/firecrawl/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.

來自 firecrawl 的更多技能

firecrawl-research-index
firecrawl
使用 Firecrawl Research 進行語義搜尋、語義與結構擴展以及內文驗證,找出能回答研究查詢的論文。對於任何文獻查找或論文檢索任務(無論是單篇論文查詢還是完整的多論文集合),一律使用此技能。
data-analysisresearchweb-scraping
oracle
firecrawl
使用 oracle CLI 的最佳實踐(提示與檔案捆綁、引擎、會話及檔案附加模式)。
pinecone
firecrawl
專為生產級AI應用設計的受管向量資料庫。全受管、自動擴展,具備混合搜尋(密集+稀疏)、元資料過濾與命名空間功能。…
wpds
firecrawl
在構建利用WordPress設計系統(WPDS)及其組件、標記、模式等的用戶界面時使用。
audiocraft-audio-generation
firecrawl
用於音訊生成的 PyTorch 函式庫,包含文字轉音樂(MusicGen)和文字轉音效(AudioGen)。當需要從文字生成音樂時使用…
skypilot-multi-cloud-orchestration
firecrawl
針對機器學習工作負載的多雲編排,具備自動成本優化功能。當您需要跨多個雲端執行訓練或批次作業、利用…時使用。
firecrawl-seo-audit
firecrawl
使用 Firecrawl 審查網站的 SEO。適用於使用者要求進行 SEO 審查、中繼資料與標題檢視、網站地圖/網站結構分析、關鍵字機會、競爭對手 SERP 比較,或優先搜尋最佳化建議時。
data-analysisresearchweb-scraping
gh-issues
firecrawl
擷取 GitHub 問題,生成子代理來實作修復並開啟 PR,然後監控並處理 PR 審查意見。用法:/gh-issues [owner/repo] [--label…