install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/WordPress/agent-skills/wp-abilities-api" ~/.claude/skills/comeonoliver-skillshub-wp-abilities-api && rm -rf "$T"
manifest:
skills/WordPress/agent-skills/wp-abilities-api/SKILL.mdsource content
WP Abilities API
When to use
Use this skill when the task involves:
- registering abilities or ability categories in PHP,
- exposing abilities to clients via REST (
),wp-abilities/v1 - consuming abilities in JS (notably
),@wordpress/abilities - diagnosing “ability doesn’t show up” / “client can’t see ability” / “REST returns empty”.
Inputs required
- Repo root (run
first if you haven’t).wp-project-triage - Target WordPress version(s) and whether this is WP core or a plugin/theme.
- Where the change should live (plugin vs theme vs mu-plugin).
Procedure
1) Confirm availability and version constraints
- If this is WP core work, check
andsignals.isWpCoreCheckout
.versions.wordpress.core - If the project targets WP < 6.9, you may need the Abilities API plugin/package rather than relying on core.
2) Find existing Abilities usage
Search for these in the repo:
wp_register_ability(wp_register_ability_category(wp_abilities_api_initwp_abilities_api_categories_initwp-abilities/v1@wordpress/abilities
If none exist, decide whether you’re introducing Abilities API fresh (new registrations + client consumption) or only consuming.
3) Register categories (optional)
If you need a logical grouping, register an ability category early (see
references/php-registration.md).
4) Register abilities (PHP)
Implement the ability in PHP registration with:
- stable
(namespaced),id
/label
,description
,category
:meta- add
when the ability is informational,readonly: true - set
for abilities you want visible to clients.show_in_rest: true
- add
Use the documented init hooks for Abilities API registration so they load at the right time (see
references/php-registration.md).
5) Confirm REST exposure
- Verify the REST endpoints exist and return expected results (see
).references/rest-api.md - If the client still can’t see the ability, confirm
is enabled and you’re querying the right endpoint.meta.show_in_rest
6) Consume from JS (if needed)
- Prefer
APIs for client-side access and checks.@wordpress/abilities - Ensure build tooling includes the dependency and the project’s build pipeline bundles it.
Verification
indicateswp-project-triage
after your change (if applicable).signals.usesAbilitiesApi: true- REST check (in a WP environment): endpoints under
return your ability and category when expected.wp-abilities/v1 - If the repo has tests, add/update coverage near:
- PHP: ability registration and meta exposure
- JS: ability consumption and UI gating
Failure modes / debugging
- Ability never appears:
- registration code not running (wrong hook / file not loaded),
- missing
,meta.show_in_rest - incorrect category/ID mismatch.
- REST shows ability but JS doesn’t:
- wrong REST base/namespace,
- JS dependency not bundled,
- caching (object/page caches) masking changes.
Escalation
- If you’re uncertain about version support, confirm target WP core versions and whether Abilities API is expected from core or as a plugin.
- For canonical details, consult:
references/rest-api.mdreferences/php-registration.md