From vanguard-frontier-agentic
Reviews WordPress plugin/theme code for missing REST permission_callbacks, unescaped block output, missing input sanitization, and missing nonce/capability checks.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vanguard-frontier-agentic:wordpress-rest-block-security-reviewThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Review the WordPress-specific security seams that a generic PHP reviewer is likely to miss: REST routes registered without an explicit `permission_callback`, dynamic blocks whose `render_callback` emits data without escaping, input that is neither validated nor sanitized before use, and state-changing requests with no nonce or capability check. Plugins and themes are where the WordPress ecosyst...
Review the WordPress-specific security seams that a generic PHP reviewer is likely to miss: REST routes registered without an explicit permission_callback, dynamic blocks whose render_callback emits data without escaping, input that is neither validated nor sanitized before use, and state-changing requests with no nonce or capability check. Plugins and themes are where the WordPress ecosystem's own advisory sources place the large majority of disclosed vulnerabilities, and each of these four gaps is a documented anti-pattern against WordPress's own core APIs, not a stylistic preference.
Use this skill when the user asks to:
register_rest_route() call or a REST controller class for a missing or overly permissive permission_callback,render_callback or render.php for unescaped output,$_POST/$_GET, shortcode or block attributes) for validation/sanitization gaps, or output for missing escaping,Do not use this skill for:
render_callback/render.php files, form handlers, admin-ajax actions, and shortcode callbacks.permission_callback enforcement.__return_true or unauthenticated render is not misflagged.permission_callback is present on every register_rest_route() call in scope, and that __return_true (or an equivalent always-true callback) is used only where the route is genuinely public.render_callback/render.php from its source to its output point and confirm the matching escaping function is applied there, not merely present somewhere in the file.admin-post/admin-ajax actions), require both an explicit nonce verification (check_admin_referer/wp_verify_nonce) and a current_user_can() capability check; neither alone is sufficient.register_rest_route() endpoints, do not flag the absence of an in-handler nonce call: under cookie authentication the REST infrastructure verifies the wp_rest nonce automatically before the route runs, so the requirement there is a capability-checking permission_callback. A missing/invalid nonce silently demotes the request to anonymous, so it is a finding only when the permission_callback assumes an authenticated user.repo evidence, documentation-based, or inference.WordPress REST route requirements, nonce/capability semantics, and block-rendering behavior are documented on developer.wordpress.org and are the only acceptable ground truth for a version or API-behavior claim. Before asserting how register_rest_route(), render_callback, nonces, or escaping/sanitizing functions behave, cite the current developer.wordpress.org page and label the claim documentation-based. If a Context7-indexed source is available for the API in question, prefer it (resolve-library-id then query-docs) and label the result context7-grounded; otherwise use the official documentation directly. Never rely on memorized API behavior for a version-gated claim.
register_rest_route() call: confirm permission_callback is present; if it is __return_true or absent, confirm public-data justification or flag it. See REST API permission_callback enforcement.render_callback/render.php: trace every dynamic value to its output point and confirm escaping is applied there. See Dynamic block output escaping.documentation-based (or context7-grounded where available), never memory.Label each finding repo evidence (seen directly in the code), context7-grounded (current documentation via Context7), documentation-based (official developer.wordpress.org documentation fetched directly), or inference. Documentation describes the intended pattern; it does not prove what a specific file actually does — always tie the claim back to the file and code path observed.
Static review only. Never execute plugin/theme code, submit forms, call REST endpoints, or trigger admin-ajax actions against any live, sandbox, or staging WordPress install. Never request, echo, store, or reproduce a secret, API key, database credential, or credential-shaped string found in code; treat any such string as a redact-and-flag finding.
Escalate to incident response any evidence the gap is already reachable in a live, publicly deployed site rather than merely present in source under review. Hand off non-WordPress-specific findings (generic PHP, infrastructure, supply-chain) to the reviewer who owns that area instead of adjudicating them here.
Load these only when needed:
permission_callback argument, the __return_true public-endpoint pattern, and REST nonce/capability enforcement.render_callback/render.php execute and what escaping is required at each output point.Return, at minimum:
npx claudepluginhub raishin/vanguard-frontier-agentic --plugin vanguard-frontier-agenticReviews WordPress plugins, themes, and blocks for security vulnerabilities, internationalization issues, performance problems, and API correctness before shipping.
Evaluates WordPress codebase against OWASP Top 10 and WP-specific vulnerability patterns. Use for code security reviews, plugin/theme audits, and incident investigations.
Develops custom WordPress themes and plugins, Gutenberg blocks, WooCommerce stores, and REST API endpoints with security hardening and performance optimization.