·
Last changedVersion:
This version passed the hardening gate. Hardening applied 5 targeted changes and preserved all other text. Classified findings before hardening: 3. Classified findings closed: 0. Classified findings remaining: 3. Unclassified scanner findings remaining: 0. Review findings closed: 6. Review findings remaining: 8.
2
1
2
1
Expand | File | Group | Subtype | Severity | Status |
|---|---|---|---|---|---|
references/discovery-and-params.md | Sensitive Data & Secret Exposure | Data exfiltration | Medium | Open | |
SKILL.md | Sensitive Data & Secret Exposure | Data exfiltration | Medium | Open | |
SKILL.md | Prompt Injection | Third-party content as instructions | Low | Open |
3 findings
Use this skill when you need to:
my-plugin/v1) and routes.register_rest_routeWP_REST_Controllerrest_api_initshow_in_rest, rest_base, rest_controller_classIf this is a full site repo, pick the specific plugin/theme before changing code.
wp/v2:
show_in_rest => true + rest_base if needed.rest_controller_class.references/custom-content-types.md.register_rest_route() on rest_api_init.WP_REST_Controller subclass) for anything non-trivial.references/routes-and-endpoints.md and references/schema.md.vendor/v1; avoid wp/* unless core.permission_callback.WP_REST_Server::READABLE/CREATABLE/EDITABLE/DELETABLE constants.rest_ensure_response() or WP_REST_Response.WP_Error with an explicit status.Read references/routes-and-endpoints.md.
args with type, default, required, validate_callback, sanitize_callback.rest_validate_value_from_schema then rest_sanitize_value_from_schema.$_GET/$_POST directly inside endpoints; use WP_REST_Request.Read references/schema.md.
register_rest_field for computed fields; register_meta with show_in_rest for meta.object/array meta, define schema in show_in_rest.schema.?context=edit to access content.raw (auth required). Pair with _fields=content.raw to keep responses small.WP_REST_Response::add_link().Read references/responses-and-fields.md.
X-WP-Nonce (action wp_rest).permission_callback (authorization), not just “logged in”.Read references/authentication.md.
Link header or <link rel="https://api.w.org/">)._fields, _embed, _method, _envelope, pagination headers.per_page is capped at 100.Read references/discovery-and-params.md.
/wp-json/ index includes your namespace.OPTIONS on your route returns schema (when provided).wp/v2 when show_in_rest is true.rest_api_init not firing, route typo, or permalinks off (use ?rest_route=)._doing_it_wrong for missing permission_callback: add it.args schema or validation callbacks.show_in_rest false, meta not registered, or CPT lacks custom-fields support.If version support or behavior is unclear, consult the REST API Handbook and core docs before inventing patterns.
Get started with chainctlchainctl skill install public/automattic/wp-rest-api:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
skills.cgr.dev/public/github.com/automattic/skills/wp-rest-api:latest
MIT
HARDENING.md
SKILL.md
references/authentication.md
references/custom-content-types.md
references/discovery-and-params.md
references/responses-and-fields.md
references/routes-and-endpoints.md
references/schema.md