CommunityCoding & Developmentgithub.com

fswp-qa-engineer

Verification stage of Full-Stack WP Developer. Runs the mechanical gate for plugins and themes (house-rule scripts, PHP lint, PHPCS with WordPress standards, PHP compatibility, PHPStan with WordPress stubs), the manual checklist, PRD or change-brief scenario tests, and the pre-release check. Reports PASS, FAIL, or NOT RUN and never implies a skipped check passed. Invoked by fswp-developer after a build and again before delivery; consult directly to audit any plugin or theme folder.

What is fswp-qa-engineer?

fswp-qa-engineer is a Claude Code agent skill that verification stage of Full-Stack WP Developer. Runs the mechanical gate for plugins and themes (house-rule scripts, PHP lint, PHPCS with WordPress standards, PHP compatibility, PHPStan with WordPress stubs), the manual checklist, PRD or change-brief scenario tests, and the pre-release check. Reports PASS, FAIL, or NOT RUN and never implies a skipped check passed. Invoked by fswp-developer after a build and again before delivery; consult directly to audit any plugin or theme folder.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/syncwin/fswp-developer/tree/main/skills/fswp-qa-engineer

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

FSWP QA Engineer

Verify the built folder, do not fix during gating. Report first, then fix in the router's fix loop.

1. Mechanical gate

bash scripts/setup_toolchain.sh              # once per environment (apt + GitHub only, no Composer)
bash scripts/run_gate.sh <dir> [min-php] [--fix]

run_gate.sh detects a theme (a style.css with a Theme Name header) and runs scripts/theme_check.py; otherwise it runs scripts/qa_check.py. Both use Python's standard library only and always work. Then it adds, where PHP and the tools exist: php -l, PHPCS WordPress-Extra (errors fail, warnings are listed), PHP compatibility for the minimum PHP, and PHPStan level 5 with WordPress stubs.

  • --fix runs phpcbf (WordPress standard) first. Use it after scaffolding and after large edits; review the diff.
  • Plugin Check needs a WordPress install and the command line (wp plugin check <slug>); it is NOT RUN elsewhere. Tell the user to run it before a WordPress.org plugin submission. For themes, the equivalent is the Theme Check plugin or the directory's automated review.
  • theme_check.py <dir> [--directory]: without the flag, real defects FAIL and directory-only rules WARN; with --directory, the WordPress.org Theme Directory requirements FAIL (missing headers, screenshot size and ratio, disallowed files, plugin-territory code, required classic-theme calls).
  • qa_check.py also checks plugin header and readme rules from the handbook (description length, unique Plugin URI, at most 5 tags, no Stable tag: trunk, numeric Tested up to, short-description length) as warnings.
  • qa_check.py enforces, for plugins: ABSPATH guards, version match (header, constant, readme Stable tag), no example.com or CDN or hosted fonts, permission_callback on every route with commented __return_true, DB upgrade check, enqueue inside callbacks, banned functions, uninstall guard, rem-only units, JS translations, source shipped with compiled output, font licenses. theme_check.py checks the header, license, entry templates, theme.json validity, banned functions, unescaped-echo heuristic, remote assets, text domain, screenshot and readme.

Reporting rule: every check is PASS, FAIL, or NOT RUN, with the tool versions used. NOT RUN is never a pass and never summarized as "clean". If PHP or a tool is missing, say so and name the command that would run it.

1a. Scope check

Compare the diff or file list with the approved brief. Files, hooks, options, or dependencies the plan did not ask for are reported as scope creep (see fswp-developer/references/lean-coding.md). Count lines added versus removed and comment on disproportion.

2. Manual checklist

references/checklist.md: only the items a script cannot judge. Run it after the mechanical gate is green.

3. Scenario tests

Every numbered scenario in the PRD (fswp-architect) gets PASS, FAIL, or NOT RUN with evidence. Always include:

  • Fresh install with no prior options or tables: no notices or fatals.
  • Deactivate then reactivate: no duplicate schedules or options.
  • Upgrade from a previous version's stored data without reactivating: schema and options migrate on load.
  • Uninstall: only plugin-owned data removed.
  • Migration mode: export diffs and visual-regression gate against baseline/ (fswp-architect).

By work type, add:

  • Theme: every template type the PRD lists renders with real content and with empty content; editor and front end match; keyboard-only navigation works; theme switch away and back leaves no fatal.
  • Update: every item in the change brief's parity list re-checked and marked; upgrade from the previous version's stored data works; nothing outside the brief changed (diff read).
  • Add-on: host active and in range (works); host inactive (add-on stays quiet, shows a notice, no fatal); host below the supported version (refuses cleanly).
  • Core patch: the ticket's reproduction fails before and passes after; the relevant PHPUnit group passes; PHPCS clean on changed lines; see fswp-core-contributor.

Where PHP can run, exercise activation and migration logic with a small PHP script; otherwise trace by reading and label it "traced, not run".

4. Release check

After everything above is green: references/release-check.md.

Output

One table: check | PASS/FAIL/NOT RUN | detail. Then FAIL list with file and line, then what the user must run themselves. For multi-session builds, copy the table into HANDOFF.md.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

fswp-api-developer

Domain skill for WordPress REST API and Abilities API work in Full-Stack WP Developer. Covers registering routes with schemas, argument validation and sanitization, permission callbacks, controller classes, exposing post types and meta, authentication (cookie nonce, application passwords), pagination and errors, and registering abilities with input and output schemas and safety annotations. Use for any custom endpoint or machine-readable capability in a plugin or theme.

fswp-architect

Planning stage of Full-Stack WP Developer. Classifies the work (new plugin, new theme, update to an existing plugin or theme, add-on for another product, or WordPress Core patch), triages existing code with a bundled detection script, asks one round of essential questions, does competitive research, and produces one reviewable PRD or change brief with a single approval gate. Also covers Migration mode and multi-session handoff docs. Invoked by fswp-developer before any code is written; consult directly for PRD, change-brief, or handoff-doc questions.

fswp-block-developer

Domain skill for WordPress block editor work in Full-Stack WP Developer. Covers building custom Gutenberg blocks (block.json, static and dynamic rendering, attributes, supports, InnerBlocks, variations, deprecations, block bindings), block patterns, and the Interactivity API (data-wp directives, stores, server-side state), with the @wordpress/scripts build workflow. Use for any custom block, pattern, or front-end interactivity in a plugin or theme.

fswp-core-contributor

WordPress Core contribution stage of Full-Stack WP Developer. Guides a contributor through finding or filing a Trac ticket, setting up the wordpress-develop checkout and test environment, writing a patch or GitHub pull request that follows Core coding standards, inline documentation, backward compatibility and tests, and preparing the ticket comment; also routes block-editor changes to the Gutenberg repository and security reports to the private process. Invoked by fswp-developer for Core patches; consult directly for Core workflow questions.

fswp-devops-engineer

Domain skill for WordPress development tooling in Full-Stack WP Developer. Covers local environments (wp-env with Docker, WordPress Playground and Blueprints), command-line site operations (plugin and theme management, database export, search-replace, cron, scaffolding), coding standards and static analysis (PHPCS with WordPress standards, PHPStan with WordPress stubs), PHP and JS testing setup, and the @wordpress/scripts toolchain. Use when setting up, running, or automating a WordPress dev or test environment.

fswp-maintainer

Change stage for existing WordPress code in Full-Stack WP Developer. Updates, fixes, refactors, and upgrades existing plugins and themes without breaking them, and builds add-ons for products you do not own (WooCommerce extensions, page-builder elements, extensions of other plugins) using hooks instead of edits to third-party files. Covers reading before changing, parity lists, deprecation, host compatibility, upgrade paths, and patch delivery. Invoked by fswp-developer after an approved change brief; consult directly for safe-change or add-on questions.

fswp-reviewer

Independent review stage of Full-Stack WP Developer. Reviews a finished WordPress plugin, theme, add-on, or Core patch through a security lens (WordPress-specific vulnerabilities, REST and AJAX authorization with an API risk map, AI-generated-code risks), a quality lens (error handling, data and upgrade safety, performance, i18n, accessibility, comment accuracy, test gaps, class and type design, scope), and an optional lean lens for trimming over-engineering, reporting only high-confidence findings in a fixed format. Invoked by fswp-developer after the verify gate, normally through the fswp-code-reviewer agent; consult directly to review or optimize any WordPress code.

fswp-theme-developer

Theme build stage of Full-Stack WP Developer. Builds custom WordPress themes - block themes (theme.json, templates, template parts, patterns, style variations), classic themes (template hierarchy, functions.php, theme supports), hybrids, and child themes - with accessibility, escaping, and directory readiness built in, plus a scaffold script. Invoked by fswp-developer after an approved PRD for a new theme; consult directly for a specific theme pattern. For changes to an existing theme use fswp-maintainer.

syncwin/fswp-plugin-developer

Plugin build stage of Full-Stack WP Developer. House standards and code templates for real WordPress plugins (not shortcode snippets) - folder anatomy, activation/uninstall lifecycle, custom post types and tables, admin UI tiers, front-end output on the Atomic Framework, REST and cron, i18n, distribution, and the Tier 3 React admin stack - plus a scaffold script. Also the base structure for add-ons. Invoked by fswp-developer after an approved PRD; consult directly for a specific plugin build pattern.

Related Skills