Introducing Plugin Check ![rw-book-cover](https://make.wordpress.org/plugins/files/2024/09/plugin-check-admin-ui.png) ## Metadata - Author: [[David Perez]] - Full Title: Introducing Plugin Check - Category: #articles - Document Note: --- tags: - #wordpress - #plugin-development - #code-quality Author: David Perez Source: Make WordPress Plugins Reference: https://make.wordpress.org/plugins/2024/09/17/introducing-plugin-check-pcp/ date created: 2025-08-23 00:00 --- # Title: Introducing Plugin Check (PCP) ## Table of Contents: - [🔗 Overview](#-overview) - [🧰 What PCP Does](#-what-pcp-does) - [⚙️ How To Use PCP](#️-how-to-use-pcp) - [🚀 CI/CD With GitHub Actions](#-cicd-with-github-actions) - [🧪 Scope and Limits](#-scope-and-limits) - [🤝 Contributing and Issue Reporting](#-contributing-and-issue-reporting) - [📚 References](#-references) ### References: Include a list of sources consulted and cited in the article. ## 📝 Summary: The Plugin Check plugin (PCP) is a WordPress tool to validate plugins against WordPress.org directory standards and broader best practices. It has a stable release, is already used by hundreds of developers, and supports both static (PHP_CodeSniffer) and dynamic runtime checks. It can be run via the WordPress admin, WP-CLI, or automatically through a GitHub Action that annotates code on commits and PRs. While it won’t replace manual reviews, it accelerates approvals, reduces bugs, and promotes accessibility, performance, and security best practices. Development happens on GitHub. ## 📖 Main Content: - PCP was proposed over two years ago and now has a stable release used widely by developers. It helps ensure plugins meet WordPress.org directory requirements and best practices. - It performs static checks via PHP_CodeSniffer and dynamic checks by activating the plugin “live” to catch runtime issues. - It’s recommended for routine development, not just submissions, to shorten feedback loops and prevent issues before they reach users. - You can run it in the admin UI, via WP-CLI, or with a dedicated GitHub Action that runs on every commit/PR and posts annotations at the exact source locations. - PCP complements, but does not replace, the manual plugin review process. False positives may occur. - Report bugs or request features on GitHub; the Action has its own repository. ### 🗒️ Notes - Background - Initial proposal >2 years ago; first stable release “earlier this year.” [0%] - Adopted by “hundreds of developers.” [0%] - Purpose - Tests compliance with WordPress.org plugin directory requirements. [0%] - Intended to be integral to the review process. [0%] - Capabilities - Static code analysis using PHP_CodeSniffer. [0%] - Dynamic checks by activating the plugin “live.” [0%] - Flags issues in i18n usage, accessibility, performance, security. [0%] - Workflow integration - Recommended as part of regular development workflow to shorten feedback loops. [50%] - Run locally via Admin or WP-CLI. [50%] - Automation - GitHub Action runs on every commit/PR; posts annotations directly on source files. [50%] - Limits and guidance - Not a replacement for manual review; speeds approval and avoids common mistakes. [50%] - Useful even if not submitting to .org; encourages baseline best practices. [50%] - Automated tools can produce false positives. [50%] - Community and maintenance - Development on GitHub; issues and feature requests welcomed. [50%] - GitHub Action maintained in a separate repo. [50%] Note: “Timestamps” above reflect scroll positions within this article (0% and 50%), which correspond to the two major sections of the content. ## 📖 References: - Introducing Plugin Check (PCP): https://make.wordpress.org/plugins/2024/09/17/introducing-plugin-check-pcp/ - PHP_CodeSniffer: https://github.com/squizlabs/PHP_CodeSniffer - GitHub Actions for WordPress examples: https://github.com/marketplace?type=actions&query=wordpress ## 🗣️ Paraphrase: 1) Original idea: “After the original proposal for a WordPress plugin check a little over two years ago, the Plugin Check plugin (or PCP for short) has become a reality… This post provides more context about Plugin Check and why you should start using it.” Paraphrase: More than two years after the initial concept was floated, Plugin Check (PCP) has shipped a stable version and is already in the hands of hundreds of developers. This article explains what PCP is and why incorporating it into your workflow is a smart move. 2) Scope and value: “In addition to things relevant for the review process, the tool flags violations or concerns around plugin development best practices… It does so using both static checks using PHP_CodeSniffer and dynamic checks, where it actually activates your plugin to test it ‘live’.” Paraphrase: Beyond satisfying directory submission rules, PCP calls out broader best-practice issues—covering i18n, accessibility, performance, and security. It combines static analysis with PHP_CodeSniffer and live activation tests to surface issues you’d otherwise miss. ## 📰 Newsletter: This week in WordPress Dev: Plugin Check (PCP) graduates from proposal to powerhouse. If you ship plugins—or plan to submit to the WordPress.org repository—PCP helps you catch i18n, accessibility, performance, and security issues before they catch your users. Run it in WP Admin, via WP-CLI, or wire it into CI with a GitHub Action that annotates problems right in your PR. It won’t replace manual review, but it will speed approvals and improve code quality across the board. Pro tip: even if you’re not publishing to .org, using PCP ensures your plugin meets community baseline standards. Read more on Make: Introducing Plugin Check (PCP). Links: - Introducing Plugin Check (PCP) on Make: https://make.wordpress.org/plugins/2024/09/17/introducing-plugin-check-pcp/ - PHP_CodeSniffer: https://github.com/squizlabs/PHP_CodeSniffer ## ✅ Action Items: Prompt for mapping article alignment to your role and goals: “Analyze how ‘Introducing Plugin Check (PCP)’ supports open-source advocacy, contributor engagement, and education within the WordPress ecosystem: - Open-source advocacy: Identify how PCP promotes transparent standards, shared tooling, and community-maintained quality gates. Explain how adopting PCP in talks, workshops, and docs models responsible stewardship and aligns with OSPO practices. - Contributor onboarding: Outline how PCP can be used in teaching pathways (PHP/JS/HTML/CSS/Git/GitHub) to reduce review friction for first-time contributors. Propose a curriculum module where learners set up PCP locally, fix flagged issues, and open a PR that passes the GitHub Action. - Sustainable funding narrative: Describe how fewer review cycles and higher first-pass quality reduce volunteer reviewer load, building a case for sustainable resourcing of QA tooling in the project. - Transparency and inclusivity: Map how standardized checks create predictable outcomes for diverse contributors regardless of background; suggest documentation and localized resources to broaden access. - OSPO trajectory: Frame PCP as a governance-ready control—document metrics (pass/fail trends, common violations, time-to-approval) and propose a dashboard to guide policy, training, and investment. - Speaking/demo plan: Draft a 15-minute live demo integrating WP-CLI runs and GitHub Action annotations, highlighting accessibility and security rules. Include sample repos and checklists educators can reuse.” Deliverables: - Workshop outline with learning outcomes and assessments - CI template for PCP with annotations enabled - Metrics plan for tracking contributor success and review time reduction ## 🧪 Hypotheses: - H1: Integrating PCP in CI will reduce plugin review turnaround time by at least 30%. - H2: Projects adopting PCP will see a measurable decline in accessibility and i18n violations within three release cycles. - H3: First-time submitters using PCP will achieve higher first-pass approval rates compared to those who do not. - H4: Dynamic activation tests will uncover a distinct class of runtime errors missed by static analysis alone. ### 📊 Methodology: - Data sources: WordPress.org review queue metadata, GitHub Action logs, PCP result artifacts, plugin directory approval timestamps. - Designs: - Quasi-experimental cohort study: compare PCP adopters vs non-adopters over 6 months. - Interrupted time series: measure violation rate - Summary: The Plugin Check plugin has become a reality. It saw its first stable release earlier this year and has since been used by hundreds of developers. This post provides more context about Plugin Check… - URL: https://make.wordpress.org/plugins/2024/09/17/introducing-plugin-check-pcp/ After the [original proposal for a WordPress plugin check](https://make.wordpress.org/plugins/2022/07/05/proposal-for-a-wordpress-plugin-checker/) a little over two years ago, the [Plugin Check plugin](https://wordpress.org/plugins/plugin-check/) (or PCP for short) has become a reality. It saw its first stable release earlier this year and has since been used by hundreds of developers. This post provides more context about Plugin Check and why you should start using it. Plugin Check is a tool for testing whether your plugin meets the required standards for the WordPress.org plugin directory. With this plugin you will be able to run most of the checks used for new submissions, and check if your plugin meets the requirements. The plugins team is currently working on making it an integral part of the review process. If you are considering submitting a new plugin to the plugin directory, run these checks yourself beforehand to save time later on. But there is more! In addition to things relevant for the review process, the tool flags violations or concerns around plugin development best practices, from basic requirements like correct usage of internationalization functions to accessibility, performance, and security best practices. It does so using both static checks using PHP\_CodeSniffer and dynamic checks, where it actually activates your plugin to test it “live”. Because of this, PCP is useful even beyond the initial plugin submission, which is why it’s recommended to make it a part of your development workflow. This shortens your feedback loop as you can immediately address potential bugs as they come up, before they affect your users. To achieve this, simply install [the plugin](https://wordpress.org/plugins/plugin-check/) on a local environment and regularly run it against your plugin. The checks can be run either via WordPress admin or WP-CLI. [![](https://make.wordpress.org/plugins/files/2024/09/plugin-check-admin-ui.png)](https://make.wordpress.org/plugins/files/2024/09/plugin-check-admin-ui.png) For even more peace of mind you can continuously monitor your plugin using a [dedicated GitHub action](https://github.com/marketplace/actions/wordpress-plugin-check). It automatically runs Plugin Check against your plugin for every commit or PR, and posts all results as annotations on your source files so you know exactly where to look for resolving any errors or warnings. [![](https://make.wordpress.org/plugins/files/2024/09/plugin-check-results.png)](https://make.wordpress.org/plugins/files/2024/09/plugin-check-results.png) Plugin Check is not a replacement for the manual review process, but it will help you speed up the process of getting your plugin approved for the WordPress.org plugin repository, and it will also help you avoid some common mistakes. Even if you do not intend to host your plugin in the WordPress.org directory, you are encouraged to use it so that your plugin follows the base requirements and best practices for WordPress plugins. Keep in mind that automated tools like this aren’t perfect, so there may occasionally be false positives. All development for this plugin is handled via [GitHub](https://github.com/WordPress/plugin-check/), and any bug reports or feature requests should be reported there. The GitHub Action is maintained in [its own repository](https://github.com/swissspidy/wp-plugin-check-action). **Download the [Plugin Check](https://wordpress.org/plugins/plugin-check/) plugin or install the [Plugin Check GitHub Action](https://github.com/marketplace/actions/wordpress-plugin-check) today to get started.** *Written and reviewed by [swissspidy](https://profiles.wordpress.org/swissspidy/), [flixos90](https://profiles.wordpress.org/flixos90/), [davidperez](https://profiles.wordpress.org/davidperez/)*, Introducing Plugin Check, David Perez, 01j84m9g1cj3wrng0w7mqbm5gc.