SKILL.md
PooCommerce Code Review
Review code changes against PooCommerce coding standards and conventions.
Critical Violations to Flag
Backend PHP Code
Consult the poocommerce-backend-dev skill for detailed standards. Using these standards as guidance, flag these violations and other similar ones:
Architecture & Structure:
- ❌ Standalone functions - Must use class methods ([file-entities.md](../poocommerce-backend-dev/file-entities.md))
- ❌ Using
newfor DI-managed classes - Classes insrc/must use$container->get()([dependency-injection.md](../poocommerce-backend-dev/dependency-injection.md)) - ❌ Classes outside
src/Internal/- Default location unless explicitly public ([file-entities.md](../poocommerce-backend-dev/file-entities.md))
Naming & Conventions:
- ❌ camelCase naming - Must use snake_case for methods/variables/hooks ([code-entities.md](../poocommerce-backend-dev/code-entities.md))
- ❌ Yoda condition violations - Must follow WordPress Coding Standards ([coding-conventions.md](../poocommerce-backend-dev/coding-conventions.md))
- ❌ Magic strings with an existing enum constant - New code comparing or assigning enumerated values (order statuses, product types, ...) must use the
Automattic\PooCommerce\Enumsconstants, not raw literals — except in code that can run during install/upgrade ([coding-conventions.md](../poocommerce-backend-dev/coding-conventions.md))
Documentation:
- ❌ Missing
@sinceannotations - Required for public/protected methods and hooks ([code-entities.md](../poocommerce-backend-dev/code-entities.md)) - ❌ Missing docblocks - Required for all hooks and methods ([code-entities.md](../poocommerce-backend-dev/code-entities.md))
- ❌ Verbose docblocks - Keep concise, one line is ideal ([code-entities.md](../poocommerce-backend-dev/code-entities.md))
Data Integrity:
- ❌ Missing validation - Must verify state before deletion/modification ([data-integrity.md](../poocommerce-backend-dev/data-integrity.md))
Testing:
- ❌ Using
$instancein tests - Must use$sutvariable name ([unit-tests.md](../poocommerce-backend-dev/unit-tests.md)) - ❌ Missing
@testdox- Required in test method docblocks ([unit-tests.md](../poocommerce-backend-dev/unit-tests.md)) - ❌ Test file naming - Must follow convention for
includes/vssrc/([unit-tests.md](../poocommerce-backend-dev/unit-tests.md)) - ❌ Cleanup that duplicates the base lifecycle - Identify the test's base class before requesting post-assertion fixture deletion or state restoration; flag cleanup already covered by its transaction or teardown ([unit-tests.md](../poocommerce-backend-dev/unit-tests.md#fixture-lifecycle-and-cleanup))
Frontend JS/TS Code
Architecture & Structure:
- ❌ Barrel self-import (circular dependency) — a JS/TS file anywhere in the monorepo importing from its own package barrel (
from '../',from '../../',from '../index',from '../../index') when that barrel re-exports it. Relevant to SWC TDZ / esbuild tree-shaking / tsc incremental builds. Fix: use the direct module path instead.
UI Text & Copy
Consult the poocommerce-copy-guidelines skill. Flag:
- ❌ Title Case in UI - Must use sentence case ([sentence-case.md](../poocommerce-copy-guidelines/sentence-case.md))
- Wrong: "Save Changes", "Order Details", "Payment Options" - Correct: "Save changes", "Order details", "Payment options" - Exceptions: Proper nouns (WooPayments), acronyms (API), brand names
Review Approach
- Scan for critical violations listed above
- Cite specific skill files when flagging issues
- Provide correct examples from the skill documentation
- Group related issues for clarity
- Be constructive - explain why the standard exists when relevant
Output Format
For each violation found:
❌ [Issue Type]: [Specific problem]
Location: [File path and line number]
Standard: [Link to relevant skill file]
Fix: [Brief explanation or example]
Notes
- All detailed standards are in the
poocommerce-backend-dev,poocommerce-dev-cycle, andpoocommerce-copy-guidelinesskills - Consult those skills for complete context and examples
- When in doubt, refer to the specific skill documentation linked above