wp-abilities-api
WordPress Abilities API
A standardized registry for plugin / theme / core functionality, designed primarily so AI agents and external tools can discover what a WordPress site can do and invoke those capabilities through a uniform contract. Each Ability has a stable identifier, JSON-Schema-typed inputs and outputs, and a required permission callback. WP_Ability::execute() validates input, checks permissions, executes, and validates output.
Pre-Abilities, the same functionality was scattered across do_action, apply_filters, custom REST routes, public PHP functions, and ad-hoc plugin APIs (each with its own conventions). The Abilities API consolidates that into one machine-readable surface.
This skill is grounded in WordPress 7.1 core behavior. Server-side Abilities shipped in WordPress 6.9; WordPress 7.0 added the client packages and WP AI Client integration. WordPress 7.1 adds unified public exposure metadata, filtered discovery, a complete execution-filter lifecycle, client-safe JSON Schema preparation, REST collection filters/pagination, and schema-aware run-input coercion. Verify version-sensitive behavior against wp-includes/abilities-api, the WP_REST_Abilities_V1_* controllers, and the abilities script modules.
When to use this skill
Trigger when ANY of the following is true:
- Scaffolding plugin functionality that AI agents (Claude, ChatGPT, custom MCP clients) should be able to discover and invoke.
- Designing an admin tool whose logic should be reachable from BOTH PHP code and the block editor JS without writing two parallel implementations.
- Reviewing a plugin where you see
wp_register_ability,wp_get_ability,WP_Ability, thewp_abilities_api_initaction, or the@wordpress/abilitiesJS package. - Registering client-side admin operations with
@wordpress/abilities, or loading server abilities into JS with@wordpress/core-abilities. - Passing abilities to
wp_ai_client_prompt()->using_abilities()or handlingWP_AI_Client_Ability_Function_Resolver. - Deciding whether to expose a feature as a custom REST endpoint vs an Ability.
- Migrating an existing custom REST endpoint to the Abilities API.