Source profileQuality 91/100

VincentChuWaiChow/vanguard-frontier-agentic/skills/php/wordpress-rest-block-security-review/SKILL.md

wordpress-rest-block-security-review

Use this skill to review WordPress plugin, theme, REST API, and block-editor code for missing or overly permissive REST permission_callback registration, unescaped dynamic block render_callback output, missing input validation/sanitization or output escaping, and missing nonce/capability checks on state-changing requests. Use when reviewing register_rest_route() calls, dynamic block render_callback/render.php files, form/admin-ajax handlers, or any code path that takes untrusted input and produc

Source repository stars
21
Declared platforms
0
Static risk flags
0
Last source update
2026-08-27
Source checked
2026-08-28

Decision brief

What it does: where it fits

Use this skill to review WordPress plugin, theme, REST API, and block-editor code for missing or overly permissive REST permission_callback registration, unescaped dynamic block render_callback output, missing input validation/sanitization or output escaping, and missing nonce/capability checks on state-changing requests. php files, form/admin-ajax handlers…

Best for

  • review a registerrestroute() call or a REST controller class for a missing or overly permissive permissioncallback,
  • review a dynamic block's rendercallback or render.php for unescaped output,
  • review input handling (REST params, $POST/$GET, shortcode or block attributes) for validation/sanitization gaps, or output for missing escaping,

Not for

  • generic PHP defects with no WordPress-specific dimension (raw SQL concatenation with no WordPress DB API involved, generic type-juggling, unrelated logic bugs) — use a general PHP security review for those.
  • infrastructure or hosting-environment hardening (server configuration, TLS, hosting-provider WAF rules); this skill reviews source, not deployment environment.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/VincentChuWaiChow/vanguard-frontier-agentic --skill "skills/php/wordpress-rest-block-security-review"
Safe inspection promptEditorial

Inspect the Agent Skill "wordpress-rest-block-security-review" from https://github.com/VincentChuWaiChow/vanguard-frontier-agentic/blob/e01b936730332eca271896571d43cc2013c67f3f/skills/php/wordpress-rest-block-security-review/SKILL.md at commit e01b936730332eca271896571d43cc2013c67f3f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    1. Enumerate the REST routes, dynamic blocks, and state-changing handlers in scope from the files provided. 2. For each registerrestroute() call: confirm permissioncallback is present; if it is returntrue or absent, confirm public-data justification or flag it. See REST API perm…

    Enumerate the REST routes, dynamic blocks, and state-changing handlers in scope from the files provided.For each registerrestroute() call: confirm permissioncallback is present; if it is returntrue or absent, confirm public-data justification or flag it. See REST API permissioncallback enforcement.For each dynamic block rendercallback/render.php: trace every dynamic value to its output point and confirm escaping is applied there. See Dynamic block output escaping.
  2. 02

    Purpose

    Review the WordPress-specific security seams that a generic PHP reviewer is likely to miss: REST routes registered without an explicit permissioncallback, dynamic blocks whose rendercallback emits data without escaping, input that is neither validated nor sanitized before use, a…

    Review the WordPress-specific security seams that a generic PHP reviewer is likely to miss: REST routes registered without an explicit permissioncallback, dynamic blocks whose rendercallback emits data without escaping,…
  3. 03

    When to use

    Use this skill when the user asks to:

    review a registerrestroute() call or a REST controller class for a missing or overly permissive permissioncallback,review a dynamic block's rendercallback or render.php for unescaped output,review input handling (REST params, $POST/$GET, shortcode or block attributes) for validation/sanitization gaps, or output for missing escaping,
  4. 04

    When not to use

    Do not use this skill for:

    generic PHP defects with no WordPress-specific dimension (raw SQL concatenation with no WordPress DB API involved, generic type-juggling, unrelated logic bugs) — use a general PHP security review for those.infrastructure or hosting-environment hardening (server configuration, TLS, hosting-provider WAF rules); this skill reviews source, not deployment environment.dependency/supply-chain review (vulnerable third-party libraries pulled in via Composer); hand that to a supply-chain reviewer.
  5. 05

    Preconditions

    The plugin or theme source in scope: REST route registrations, block registration and rendercallback/render.php files, form handlers, admin-ajax actions, and shortcode callbacks.

    The plugin or theme source in scope: REST route registrations, block registration and rendercallback/render.php files, form handlers, admin-ajax actions, and shortcode callbacks.The WordPress version the code targets, where relevant to a version-gated API such as permissioncallback enforcement.Whether any REST route or block output is genuinely intended to be public, so a correctly-scoped returntrue or unauthenticated render is not misflagged.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars21SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
VincentChuWaiChow/vanguard-frontier-agentic
Skill path
skills/php/wordpress-rest-block-security-review/SKILL.md
Commit
e01b936730332eca271896571d43cc2013c67f3f
License
Apache-2.0
Collected
2026-08-28
Default branch
master
View the original SKILL.md

WordPress REST & Block Security Review

Purpose

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.

When to use

Use this skill when the user asks to:

  • review a register_rest_route() call or a REST controller class for a missing or overly permissive permission_callback,
  • review a dynamic block's render_callback or render.php for unescaped output,
  • review input handling (REST params, $_POST/$_GET, shortcode or block attributes) for validation/sanitization gaps, or output for missing escaping,
  • review a form submission, admin-ajax action, or REST write for missing nonce or capability checks.

When not to use

Do not use this skill for:

  • generic PHP defects with no WordPress-specific dimension (raw SQL concatenation with no WordPress DB API involved, generic type-juggling, unrelated logic bugs) — use a general PHP security review for those.
  • infrastructure or hosting-environment hardening (server configuration, TLS, hosting-provider WAF rules); this skill reviews source, not deployment environment.
  • dependency/supply-chain review (vulnerable third-party libraries pulled in via Composer); hand that to a supply-chain reviewer.
  • any live exercise of a WordPress install — executing plugin/theme code, submitting forms, calling REST endpoints, or triggering admin-ajax actions. This skill is static review only.

Preconditions

  • The plugin or theme source in scope: REST route registrations, block registration and render_callback/render.php files, form handlers, admin-ajax actions, and shortcode callbacks.
  • The WordPress version the code targets, where relevant to a version-gated API such as permission_callback enforcement.
  • Whether any REST route or block output is genuinely intended to be public, so a correctly-scoped __return_true or unauthenticated render is not misflagged.

Lean operating rules

  • Confirm 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.
  • Trace every dynamic value in a block's 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.
  • Require validation or sanitization of every untrusted input before use, favoring validation/rejection over sanitization alone where a specific check is possible.
  • On non-REST state-changing handlers (form POSTs, 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.
  • For 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.
  • Never request, echo, store, or reproduce a secret, API key, credential, or credential-shaped string found in code; redact-and-flag it instead.
  • Label every claim repo evidence, documentation-based, or inference.

Context7 documentation protocol

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.

Workflow

  1. Enumerate the REST routes, dynamic blocks, and state-changing handlers in scope from the files provided.
  2. For each 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.
  3. For each dynamic block render_callback/render.php: trace every dynamic value to its output point and confirm escaping is applied there. See Dynamic block output escaping.
  4. For each input source and output point in scope: confirm validation/sanitization on input and escaping on output, and confirm nonce plus capability checks on state-changing requests. See Input validation, sanitization, and output escaping.
  5. Emit findings with evidence tiers, concrete exploit narratives, remediation, and verification steps; hand off any non-WordPress-specific finding to the owning reviewer.

Decision gates

  • Block only on a finding with a demonstrated reachable path (unauthenticated REST access, unescaped render output, unchecked state change) — not on the mere absence of a keyword.
  • Every WordPress-API version or behavior claim is documentation-based (or context7-grounded where available), never memory.
  • Every finding names the specific route, block, or handler, not a general area of the codebase.
  • Non-WordPress-specific findings are handed off, not adjudicated here.

Evidence classification

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.

Security and privacy constraints

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.

Escalation conditions

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.

References

Load these only when needed:

Response minimum

Return, at minimum:

  • the route(s), block(s), or handler(s) in scope and, per finding, the failure class and evidence tier;
  • the concrete exploit narrative (how the gap is actually reachable, not just theoretically present);
  • concrete remediation naming the specific WordPress function or pattern to add, and an exact verification step;
  • handoffs for any non-WordPress-specific finding, and any incident-response escalation.

Anti-goals

  • Do not expand into generic PHP review; own the WordPress-specific seam, hand off everything else.
  • Do not execute plugin/theme code or contact any live, sandbox, or staging WordPress install.
  • Do not echo, reproduce, or transmit any secret, credential, or credential-shaped string.
  • Do not assert a WordPress API version or behavior from memory.

Frequently asked questions

What to verify before installation and use

What does the wordpress-rest-block-security-review source document cover?

Use this skill to review WordPress plugin, theme, REST API, and block-editor code for missing or overly permissive REST permission_callback registration, unescaped dynamic block render_callback output, missing input validation/sanitization or output escaping, and missing nonce/capability checks on state-changing requests. php files, form/admin-ajax handlers…

How do I install wordpress-rest-block-security-review?

The source record exposes this install command: npx skills add https://github.com/VincentChuWaiChow/vanguard-frontier-agentic --skill "skills/php/wordpress-rest-block-security-review". Inspect the command and pinned source before running it.

Alternatives

Compare before choosing

Computed 100147

oaustegard/claude-skills

featuring

Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre

Computed 10017

dancingteeth/unified-code-review

unified-code-review

Risk-first code review for PRs and branch audits: blast-radius triage, agent-authored discipline (tests first, intent evidence), call-graph pincer for integration defects between modules, then structural code-judo bar. Use when reviewing PRs, auditing agent-written diffs, catching rubber-stamp green CI, or wiring bugs single-file review misses. Prefer over structure-only thermo-nuclear review alone. Do not use for unrelated coding tasks or as an always-on rule.

Computed 99241

enuno/unifi-mcp-server

unifi-mcp-tool-builder

Specialized guide for adding new MCP tools to the UniFi MCP Server following project standards, UniFi API patterns, and test-driven development practices. Use when implementing new UniFi Network Controller features as MCP tools.

Computed 9970

PaulRBerg/agent-skills

skill-writing

Create/scaffold/init a project-local agent skill under `.agents/skills` in an ordinary repository; defer to repository instructions that define a source catalog and lifecycle.