{"id":36978208,"url":"https://github.com/wp-cli/ability-command","last_synced_at":"2026-01-13T22:47:40.595Z","repository":{"id":327951977,"uuid":"1113185972","full_name":"wp-cli/ability-command","owner":"wp-cli","description":"Lists, shows, manages and executes WordPress Abilities and their categories","archived":false,"fork":false,"pushed_at":"2025-12-20T21:57:52.000Z","size":41,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-22T20:49:19.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wp-cli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-09T16:28:29.000Z","updated_at":"2025-12-20T21:57:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wp-cli/ability-command","commit_stats":null,"previous_names":["wp-cli/ability-command"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wp-cli/ability-command","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-cli%2Fability-command","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-cli%2Fability-command/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-cli%2Fability-command/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-cli%2Fability-command/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wp-cli","download_url":"https://codeload.github.com/wp-cli/ability-command/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-cli%2Fability-command/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28403707,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-13T22:47:39.856Z","updated_at":"2026-01-13T22:47:40.586Z","avatar_url":"https://github.com/wp-cli.png","language":"PHP","readme":"wp-cli/ability-command\n======================\n\nLists, inspects, and executes abilities registered via the WordPress Abilities API.\n\n[![Testing](https://github.com/wp-cli/ability-command/actions/workflows/testing.yml/badge.svg)](https://github.com/wp-cli/ability-command/actions/workflows/testing.yml)\n\nQuick links: [Using](#using) | [Installing](#installing) | [Contributing](#contributing) | [Support](#support)\n\n## Using\n\nThis package implements the following commands:\n\n### wp ability\n\nLists, inspects, and executes abilities registered via the WordPress Abilities API.\n\n~~~\nwp ability\n~~~\n\nThe Abilities API, introduced in WordPress 6.9, provides a standardized way\nto register and discover distinct units of functionality within a WordPress site.\n\n**EXAMPLES**\n\n    # List all registered abilities.\n    $ wp ability list\n    +---------------------------+----------------------+----------+------------------------------------------+\n    | name                      | label                | category | description                              |\n    +---------------------------+----------------------+----------+------------------------------------------+\n    | core/get-site-info        | Get Site Information | site     | Returns site information configured i... |\n    | core/get-user-info        | Get User Information | user     | Returns basic profile details for the... |\n    | core/get-environment-info | Get Environment Info | site     | Returns core details about the site's... |\n    +---------------------------+----------------------+----------+------------------------------------------+\n\n    # Get details of a specific ability.\n    $ wp ability get core/get-site-info --fields=name,label,category,readonly,show_in_rest\n    +---------------+----------------------+\n    | Field         | Value                |\n    +---------------+----------------------+\n    | name          | core/get-site-info   |\n    | label         | Get Site Information |\n    | category      | site                 |\n    | readonly      | 1                    |\n    | show_in_rest  | 1                    |\n    +---------------+----------------------+\n\n    # Execute an ability with JSON input (required for array values).\n    $ wp ability run core/get-site-info --input='{\"fields\":[\"name\",\"version\"]}' --user=admin\n    {\n        \"name\": \"Test Blog\",\n        \"version\": \"6.9\"\n    }\n\n    # Check if an ability exists.\n    $ wp ability exists core/get-site-info\n    $ echo $?\n    0\n\n    # Check if user can run an ability.\n    $ wp ability can-run core/get-site-info\n    $ echo $?\n    0\n\n    # Validate input before execution.\n    $ wp ability validate core/get-site-info --input='{\"fields\":[\"name\",\"version\"]}'\n    Success: Input is valid.\n\n\n\n### wp ability list\n\nLists all registered abilities.\n\n~~~\nwp ability list [--category=\u003cslug\u003e] [--namespace=\u003cprefix\u003e] [--show-in-rest=\u003cbool\u003e] [--field=\u003cfield\u003e] [--fields=\u003cfields\u003e] [--format=\u003cformat\u003e]\n~~~\n\n**OPTIONS**\n\n\t[--category=\u003cslug\u003e]\n\t\tFilter abilities by category slug.\n\n\t[--namespace=\u003cprefix\u003e]\n\t\tFilter abilities by namespace prefix (e.g., 'core' for 'core/*' abilities).\n\n\t[--show-in-rest=\u003cbool\u003e]\n\t\tFilter abilities by REST API exposure.\n\n\t[--field=\u003cfield\u003e]\n\t\tPrints the value of a single field for each ability.\n\n\t[--fields=\u003cfields\u003e]\n\t\tLimit the output to specific ability fields.\n\n\t[--format=\u003cformat\u003e]\n\t\tRender output in a particular format.\n\t\t---\n\t\tdefault: table\n\t\toptions:\n\t\t  - table\n\t\t  - csv\n\t\t  - json\n\t\t  - yaml\n\t\t  - count\n\t\t  - ids\n\t\t---\n\n**AVAILABLE FIELDS**\n\nThese fields will be displayed by default for each ability:\n\n* name\n* label\n* category\n* description\n\nThese fields are optionally available:\n\n* readonly\n* destructive\n* idempotent\n* show_in_rest\n\n**EXAMPLES**\n\n    # List all abilities.\n    $ wp ability list\n    +---------------------------+----------------------+----------+------------------------------------------+\n    | name                      | label                | category | description                              |\n    +---------------------------+----------------------+----------+------------------------------------------+\n    | core/get-site-info        | Get Site Information | site     | Returns site information configured i... |\n    | core/get-user-info        | Get User Information | user     | Returns basic profile details for the... |\n    +---------------------------+----------------------+----------+------------------------------------------+\n\n    # List abilities in a specific category.\n    $ wp ability list --category=site\n\n    # List abilities by namespace.\n    $ wp ability list --namespace=core\n\n    # List abilities exposed to REST API.\n    $ wp ability list --show-in-rest=true\n\n    # List abilities as JSON.\n    $ wp ability list --format=json\n\n    # List only ability names.\n    $ wp ability list --field=name\n    core/get-site-info\n    core/get-user-info\n    core/get-environment-info\n\n\n\n### wp ability get\n\nGets details about a registered ability.\n\n~~~\nwp ability get \u003cname\u003e [--field=\u003cfield\u003e] [--fields=\u003cfields\u003e] [--format=\u003cformat\u003e]\n~~~\n\n**OPTIONS**\n\n\t\u003cname\u003e\n\t\tThe ability name (namespace/ability-name format).\n\n\t[--field=\u003cfield\u003e]\n\t\tInstead of returning the whole ability, returns the value of a single field.\n\n\t[--fields=\u003cfields\u003e]\n\t\tLimit the output to specific fields. Defaults to all fields.\n\n\t[--format=\u003cformat\u003e]\n\t\tRender output in a particular format.\n\t\t---\n\t\tdefault: table\n\t\toptions:\n\t\t  - table\n\t\t  - csv\n\t\t  - json\n\t\t  - yaml\n\t\t---\n\n**AVAILABLE FIELDS**\n\n* name\n* label\n* category\n* description\n* input_schema\n* output_schema\n* readonly\n* destructive\n* idempotent\n* show_in_rest\n\n**EXAMPLES**\n\n    # Get details of a specific ability.\n    $ wp ability get core/get-site-info\n    +---------------+----------------------+\n    | Field         | Value                |\n    +---------------+----------------------+\n    | name          | core/get-site-info   |\n    | label         | Get Site Information |\n    | category      | site                 |\n    | description   | Returns site info... |\n    | input_schema  | {\"type\":\"object\"}    |\n    | output_schema | {\"type\":\"object\"}    |\n    | readonly      | 1                    |\n    | destructive   | 0                    |\n    | idempotent    | 1                    |\n    | show_in_rest  | 1                    |\n    +---------------+----------------------+\n\n    # Get ability as JSON.\n    $ wp ability get core/get-site-info --format=json\n\n    # Get only the description.\n    $ wp ability get core/get-site-info --field=description\n    Returns site information configured in WordPress.\n\n\n\n### wp ability run\n\nExecutes a registered ability.\n\n~~~\nwp ability run \u003cname\u003e [--input=\u003cjson\u003e] [--\u003cfield\u003e=\u003cvalue\u003e] [--format=\u003cformat\u003e]\n~~~\n\n**OPTIONS**\n\n\t\u003cname\u003e\n\t\tThe ability name (namespace/ability-name format).\n\n\t[--input=\u003cjson\u003e]\n\t\tJSON string containing input data for the ability. Use '-' to read from stdin.\n\n\t[--\u003cfield\u003e=\u003cvalue\u003e]\n\t\tIndividual input fields. Alternative to --input for simple inputs.\n\n\t[--format=\u003cformat\u003e]\n\t\tRender output in a particular format.\n\t\t---\n\t\tdefault: json\n\t\toptions:\n\t\t  - json\n\t\t  - yaml\n\t\t  - var_export\n\t\t---\n\n**EXAMPLES**\n\n    # Execute an ability.\n    $ wp ability run core/get-site-info --user=admin\n    {\n        \"name\": \"Test Blog\",\n        \"description\": \"Just another WordPress site\",\n        \"url\": \"http://example.com\",\n        ...\n    }\n\n    # Execute an ability with JSON input (required for array values).\n    $ wp ability run core/get-site-info --input='{\"fields\":[\"name\",\"version\"]}' --user=admin\n    {\n        \"name\": \"Test Blog\",\n        \"version\": \"6.9\"\n    }\n\n    # Execute an ability with simple string arguments.\n    $ wp ability run my-plugin/greet --name=World\n\n    # Execute and output as YAML.\n    $ wp ability run core/get-site-info --format=yaml --user=admin\n    name: Test Blog\n    description: Just another WordPress site\n    ...\n\n    # Execute with input from stdin.\n    $ echo '{\"fields\":[\"name\"]}' | wp ability run core/get-site-info --input=- --user=admin\n\n\n\n### wp ability exists\n\nChecks whether an ability is registered.\n\n~~~\nwp ability exists \u003cname\u003e\n~~~\n\nExits with return code 0 if the ability exists, 1 if it does not.\n\n**OPTIONS**\n\n\t\u003cname\u003e\n\t\tThe ability name (namespace/ability-name format).\n\n**EXAMPLES**\n\n    # Check if an ability exists.\n    $ wp ability exists core/get-site-info\n    $ echo $?\n    0\n\n    # Check for non-existent ability.\n    $ wp ability exists nonexistent/ability\n    $ echo $?\n    1\n\n    # Use in a script.\n    $ if wp ability exists core/get-site-info; then\n    \u003e   wp ability run core/get-site-info\n    \u003e fi\n\n\n\n### wp ability can-run\n\nChecks if the current user can execute an ability.\n\n~~~\nwp ability can-run \u003cname\u003e [--input=\u003cjson\u003e] [--\u003cfield\u003e=\u003cvalue\u003e]\n~~~\n\nValidates permissions without actually executing the ability.\nExits with return code 0 if permitted, 1 if not.\n\n**OPTIONS**\n\n\t\u003cname\u003e\n\t\tThe ability name (namespace/ability-name format).\n\n\t[--input=\u003cjson\u003e]\n\t\tJSON string containing input data for permission checking.\n\n\t[--\u003cfield\u003e=\u003cvalue\u003e]\n\t\tIndividual input fields for permission checking.\n\n**EXAMPLES**\n\n    # Check if current user can run an ability (as admin).\n    $ wp ability can-run core/get-site-info --user=admin\n    $ echo $?\n    0\n\n    # Check permission when not permitted.\n    $ wp ability can-run core/get-site-info\n    $ echo $?\n    1\n\n    # Use in a script.\n    $ if wp ability can-run core/get-site-info --user=admin; then\n    \u003e   wp ability run core/get-site-info --user=admin\n    \u003e fi\n\n\n\n### wp ability validate\n\nValidates input against an ability's schema.\n\n~~~\nwp ability validate \u003cname\u003e [--input=\u003cjson\u003e] [--\u003cfield\u003e=\u003cvalue\u003e]\n~~~\n\nValidates the input data without executing the ability.\nUseful for testing input before execution.\n\n**OPTIONS**\n\n\t\u003cname\u003e\n\t\tThe ability name (namespace/ability-name format).\n\n\t[--input=\u003cjson\u003e]\n\t\tJSON string containing input data to validate.\n\n\t[--\u003cfield\u003e=\u003cvalue\u003e]\n\t\tIndividual input fields to validate.\n\n**EXAMPLES**\n\n    # Validate input for an ability (use JSON for array values).\n    $ wp ability validate core/get-site-info --input='{\"fields\":[\"name\",\"version\"]}'\n    Success: Input is valid.\n\n    # Validate simple string arguments.\n    $ wp ability validate my-plugin/greet --name=World\n    Success: Input is valid.\n\n    # Validation failure shows error message.\n    $ wp ability validate core/get-site-info --input='{\"fields\":\"invalid\"}'\n    Error: Ability \"core/get-site-info\" has invalid input. Reason: ...\n\n\n\n### wp ability category\n\nLists and inspects ability categories registered via the WordPress Abilities API.\n\n~~~\nwp ability category\n~~~\n\nThe Abilities API, introduced in WordPress 6.9, uses categories to organize\nrelated abilities for better discoverability.\n\n**EXAMPLES**\n\n    # List all registered ability categories.\n    $ wp ability category list\n    +------+-------+-----------------------------------------------------+\n    | slug | label | description                                         |\n    +------+-------+-----------------------------------------------------+\n    | site | Site  | Abilities that retrieve or modify site information. |\n    | user | User  | Abilities that retrieve or modify user information. |\n    +------+-------+-----------------------------------------------------+\n\n    # Get details of a specific category.\n    $ wp ability category get site\n    +-------------+-----------------------------------------------------+\n    | Field       | Value                                               |\n    +-------------+-----------------------------------------------------+\n    | slug        | site                                                |\n    | label       | Site                                                |\n    | description | Abilities that retrieve or modify site information. |\n    | meta        | {}                                                  |\n    +-------------+-----------------------------------------------------+\n\n    # Check if a category exists.\n    $ wp ability category exists site\n    $ echo $?\n    0\n\n\n\n\n\n### wp ability category list\n\nLists all registered ability categories.\n\n~~~\nwp ability category list [--field=\u003cfield\u003e] [--fields=\u003cfields\u003e] [--format=\u003cformat\u003e]\n~~~\n\n**OPTIONS**\n\n\t[--field=\u003cfield\u003e]\n\t\tPrints the value of a single field for each category.\n\n\t[--fields=\u003cfields\u003e]\n\t\tLimit the output to specific category fields.\n\n\t[--format=\u003cformat\u003e]\n\t\tRender output in a particular format.\n\t\t---\n\t\tdefault: table\n\t\toptions:\n\t\t  - table\n\t\t  - csv\n\t\t  - json\n\t\t  - yaml\n\t\t  - count\n\t\t---\n\n**AVAILABLE FIELDS**\n\nThese fields will be displayed by default for each category:\n\n* slug\n* label\n* description\n\n**EXAMPLES**\n\n    # List all categories.\n    $ wp ability category list\n    +------+-------+-----------------------------------------------------+\n    | slug | label | description                                         |\n    +------+-------+-----------------------------------------------------+\n    | site | Site  | Abilities that retrieve or modify site information. |\n    | user | User  | Abilities that retrieve or modify user information. |\n    +------+-------+-----------------------------------------------------+\n\n    # List categories as JSON.\n    $ wp ability category list --format=json\n    [{\"slug\":\"site\",\"label\":\"Site\",\"description\":\"...\"},{\"slug\":\"user\",...}]\n\n    # List only category slugs.\n    $ wp ability category list --field=slug\n    site\n    user\n\n\n\n### wp ability category get\n\nGets details about a registered ability category.\n\n~~~\nwp ability category get \u003cslug\u003e [--field=\u003cfield\u003e] [--fields=\u003cfields\u003e] [--format=\u003cformat\u003e]\n~~~\n\n**OPTIONS**\n\n\t\u003cslug\u003e\n\t\tThe category slug.\n\n\t[--field=\u003cfield\u003e]\n\t\tInstead of returning the whole category, returns the value of a single field.\n\n\t[--fields=\u003cfields\u003e]\n\t\tLimit the output to specific fields. Defaults to all fields.\n\n\t[--format=\u003cformat\u003e]\n\t\tRender output in a particular format.\n\t\t---\n\t\tdefault: table\n\t\toptions:\n\t\t  - table\n\t\t  - csv\n\t\t  - json\n\t\t  - yaml\n\t\t---\n\n**AVAILABLE FIELDS**\n\n* slug\n* label\n* description\n* meta\n\n**EXAMPLES**\n\n    # Get details of a specific category.\n    $ wp ability category get site\n    +-------------+-----------------------------------------------------+\n    | Field       | Value                                               |\n    +-------------+-----------------------------------------------------+\n    | slug        | site                                                |\n    | label       | Site                                                |\n    | description | Abilities that retrieve or modify site information. |\n    | meta        | {}                                                  |\n    +-------------+-----------------------------------------------------+\n\n    # Get category as JSON.\n    $ wp ability category get site --format=json\n    {\"slug\":\"site\",\"label\":\"Site\",\"description\":\"...\",\"meta\":\"{}\"}\n\n    # Get only the label.\n    $ wp ability category get site --field=label\n    Site\n\n\n\n### wp ability category exists\n\nChecks whether an ability category is registered.\n\n~~~\nwp ability category exists \u003cslug\u003e\n~~~\n\nExits with return code 0 if the category exists, 1 if it does not.\n\n**OPTIONS**\n\n\t\u003cslug\u003e\n\t\tThe category slug.\n\n**EXAMPLES**\n\n    # Check if a category exists.\n    $ wp ability category exists site\n    $ echo $?\n    0\n\n    # Check for non-existent category.\n    $ wp ability category exists nonexistent\n    $ echo $?\n    1\n\n    # Use in a script.\n    $ if wp ability category exists site; then\n    \u003e   echo \"Category exists\"\n    \u003e fi\n\n## Installing\n\nThis package is included with WP-CLI itself, no additional installation necessary.\n\nTo install the latest version of this package over what's included in WP-CLI, run:\n\n    wp package install git@github.com:wp-cli/ability-command.git\n\n## Contributing\n\nWe appreciate you taking the initiative to contribute to this project.\n\nContributing isn’t limited to just code. We encourage you to contribute in the way that best fits your abilities, by writing tutorials, giving a demo at your local meetup, helping other users with their support questions, or revising our documentation.\n\nFor a more thorough introduction, [check out WP-CLI's guide to contributing](https://make.wordpress.org/cli/handbook/contributing/). This package follows those policy and guidelines.\n\n### Reporting a bug\n\nThink you’ve found a bug? We’d love for you to help us get it fixed.\n\nBefore you create a new issue, you should [search existing issues](https://github.com/wp-cli/ability-command/issues?q=label%3Abug%20) to see if there’s an existing resolution to it, or if it’s already been fixed in a newer version.\n\nOnce you’ve done a bit of searching and discovered there isn’t an open or fixed issue for your bug, please [create a new issue](https://github.com/wp-cli/ability-command/issues/new). Include as much detail as you can, and clear steps to reproduce if possible. For more guidance, [review our bug report documentation](https://make.wordpress.org/cli/handbook/bug-reports/).\n\n### Creating a pull request\n\nWant to contribute a new feature? Please first [open a new issue](https://github.com/wp-cli/ability-command/issues/new) to discuss whether the feature is a good fit for the project.\n\nOnce you've decided to commit the time to seeing your pull request through, [please follow our guidelines for creating a pull request](https://make.wordpress.org/cli/handbook/pull-requests/) to make sure it's a pleasant experience. See \"[Setting up](https://make.wordpress.org/cli/handbook/pull-requests/#setting-up)\" for details specific to working on this package locally.\n\n## Support\n\nGitHub issues aren't for general support questions, but there are other venues you can try: https://wp-cli.org/#support\n\n\n*This README.md is generated dynamically from the project's codebase using `wp scaffold package-readme` ([doc](https://github.com/wp-cli/scaffold-package-command#wp-scaffold-package-readme)). To suggest changes, please submit a pull request against the corresponding part of the codebase.*\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwp-cli%2Fability-command","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwp-cli%2Fability-command","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwp-cli%2Fability-command/lists"}