[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GKWJDFKQM27HTFXX20QVTP":3,"skill-same:01M6GKWJDFKQM27HTFXX20QVTP":104},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":60,"ownerHtmlUrl":61,"ownerBlogUrl":62,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M6GKWJDFKQM27HTFXX20QVTP","wp-rest-api",null,"Use when building, extending, or debugging WordPress REST API endpoints\u002Froutes: register_rest_route, WP_REST_Controller\u002Fcontroller classes, schema\u002Fargument validation, permission_callback\u002Fauthentication, response shaping, register_rest_field\u002Fregister_meta, or exposing CPTs\u002Ftaxonomies via show_in_rest.","hekivo\u002Fkivo-wise","hekivo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F278159278?v=4","01M6GKH8S3Z4CAJ9RRR607G1WJ","Hekivo","01M6GKH8XNM7HTVF4DC86MA8RG",14,"MIT","https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"rest api","REST","api","wp rest api","filesystem","wp-cli","with","register","route","show","schema","use","wordpress","shaping","Bash","controller","Meta","authentication","debugging","workflows","2026-11-10 10:12:30",false,"---\nname: wp-rest-api\ndescription: \"Use when building, extending, or debugging WordPress REST API endpoints\u002Froutes: register_rest_route, WP_REST_Controller\u002Fcontroller classes, schema\u002Fargument validation, permission_callback\u002Fauthentication, response shaping, register_rest_field\u002Fregister_meta, or exposing CPTs\u002Ftaxonomies via show_in_rest.\"\ncompatibility: \"Targets WordPress 7.0+ (PHP 7.4.0+). Filesystem-based agent with bash + node. Some workflows require WP-CLI.\"\n---\n\n# WP REST API\n\n## When to use\n\nUse this skill when you need to:\n\n- create or update REST routes\u002Fendpoints\n- debug 401\u002F403\u002F404 errors or permission\u002Fnonce issues\n- add custom fields\u002Fmeta to REST responses\n- expose custom post types or taxonomies via REST\n- implement schema + argument validation\n- adjust response links\u002Fembedding\u002Fpagination\n\n## Inputs required\n\n- Repo root + target plugin\u002Ftheme\u002Fmu-plugin (path to entrypoint).\n- Desired namespace + version (e.g. `my-plugin\u002Fv1`) and routes.\n- Authentication mode (cookie + nonce vs application passwords vs auth plugin).\n- Target WordPress version constraints (if below 7.0, call out).\n\n## Procedure\n\n### 0) Triage and locate REST usage\n\n1. Run triage:\n   - `node scripts\u002Fdetect-roots-project.mjs` (plugin root; replaces upstream wp-project-triage)\n2. Search for existing REST usage:\n   - `register_rest_route`\n   - `WP_REST_Controller`\n   - `rest_api_init`\n   - `show_in_rest`, `rest_base`, `rest_controller_class`\n\nIf this is a full site repo, pick the specific plugin\u002Ftheme before changing code.\n\n### 1) Choose the right approach\n\n- **Expose CPT\u002Ftaxonomy in `wp\u002Fv2`:**\n  - Use `show_in_rest => true` + `rest_base` if needed.\n  - Optionally provide `rest_controller_class`.\n  - Read `references\u002Fcustom-content-types.md`.\n- **Custom endpoints:**\n  - Use `register_rest_route()` on `rest_api_init`.\n  - Prefer a controller class (`WP_REST_Controller` subclass) for anything non-trivial.\n  - Read `references\u002Froutes-and-endpoints.md` and `references\u002Fschema.md`.\n\n### 2) Register routes safely (namespaces, methods, permissions)\n\n- Use a unique namespace `vendor\u002Fv1`; avoid `wp\u002F*` unless core.\n- Always provide `permission_callback` (use `__return_true` for public endpoints).\n- Use `WP_REST_Server::READABLE\u002FCREATABLE\u002FEDITABLE\u002FDELETABLE` constants.\n- Return data via `rest_ensure_response()` or `WP_REST_Response`.\n- Return errors via `WP_Error` with an explicit `status`.\n\nRead `references\u002Froutes-and-endpoints.md`.\n\n### 3) Validate\u002Fsanitize request args\n\n- Define `args` with `type`, `default`, `required`, `validate_callback`, `sanitize_callback`.\n- Prefer JSON Schema validation with `rest_validate_value_from_schema` then `rest_sanitize_value_from_schema`.\n- Never read `$_GET`\u002F`$_POST` directly inside endpoints; use `WP_REST_Request`.\n\nRead `references\u002Fschema.md`.\n\n### 4) Responses, fields, and links\n\n- Do **not** remove core fields from default endpoints; add fields instead.\n- Use `register_rest_field` for computed fields; `register_meta` with `show_in_rest` for meta.\n- For `object`\u002F`array` meta, define schema in `show_in_rest.schema`.\n- If you need unfiltered post content (e.g., ToC plugins injecting HTML), request `?context=edit` to access `content.raw` (auth required). Pair with `_fields=content.raw` to keep responses small.\n- Add related resource links via `WP_REST_Response::add_link()`.\n\nRead `references\u002Fresponses-and-fields.md`.\n\n### 5) Authentication and authorization\n\n- For wp-admin\u002FJS: cookie auth + `X-WP-Nonce` (action `wp_rest`).\n- For external clients: application passwords (basic auth) or an auth plugin.\n- Use capability checks in `permission_callback` (authorization), not just “logged in”.\n\nRead `references\u002Fauthentication.md`.\n\n### 6) Client-facing behavior (discovery, pagination, embeds)\n\n- Ensure discovery works (`Link` header or `\u003Clink rel=\"https:\u002F\u002Fapi.w.org\u002F\">`).\n- Support `_fields`, `_embed`, `_method`, `_envelope`, pagination headers.\n- Remember `per_page` is capped at 100.\n\nRead `references\u002Fdiscovery-and-params.md`.\n\n## Verification\n\n- `\u002Fwp-json\u002F` index includes your namespace.\n- `OPTIONS` on your route returns schema (when provided).\n- Endpoint returns expected data; permission failures return 401\u002F403 as appropriate.\n- CPT\u002Ftaxonomy routes appear under `wp\u002Fv2` when `show_in_rest` is true.\n- Run repo lint\u002Ftests and any PHP\u002FJS build steps.\n\n## Failure modes \u002F debugging\n\n- 404: `rest_api_init` not firing, route typo, or permalinks off (use `?rest_route=`).\n- 401\u002F403: missing nonce\u002Fauth, or `permission_callback` too strict.\n- `_doing_it_wrong` for missing `permission_callback`: add it (use `__return_true` if public).\n- Invalid params: missing\u002Fincorrect `args` schema or validation callbacks.\n- Fields missing: `show_in_rest` false, meta not registered, or CPT lacks `custom-fields` support.\n\n## Escalation\n\nIf version support or behavior is unclear, consult the REST API Handbook and core docs before inventing patterns.\n","# WP REST API\n\n## When to use\n\nUse this skill when you need to:\n\n- create or update REST routes\u002Fendpoints\n- debug 401\u002F403\u002F404 errors or permission\u002Fnonce issues\n- add custom fields\u002Fmeta to REST responses\n- expose custom post types or taxonomies via REST\n- implement schema + argument validation\n- adjust response links\u002Fembedding\u002Fpagination\n\n## Inputs required\n\n- Repo root + target plugin\u002Ftheme\u002Fmu-plugin (path to entrypoint).\n- Desired namespace + version (e.g. `my-plugin\u002Fv1`) and routes.\n- Authentication mode (cookie + nonce vs application passwords vs auth plugin).\n- Target WordPress version constraints (if below 7.0, call out).\n\n## Procedure\n\n### 0) Triage and locate REST usage\n\n1. Run triage:\n   - `node scripts\u002Fdetect-roots-project.mjs` (plugin root; replaces upstream wp-project-triage)\n2. Search for existing REST usage:\n   - `register_rest_route`\n   - `WP_REST_Controller`\n   - `rest_api_init`\n   - `show_in_rest`, `rest_base`, `rest_controller_class`\n\nIf this is a full site repo, pick the specific plugin\u002Ftheme before changing code.\n\n### 1) Choose the right approach\n\n- **Expose CPT\u002Ftaxonomy in `wp\u002Fv2`:**\n  - Use `show_in_rest => true` + `rest_base` if needed.\n  - Optionally provide `rest_controller_class`.\n  - Read `references\u002Fcustom-content-types.md`.\n- **Custom endpoints:**\n  - Use `register_rest_route()` on `rest_api_init`.\n  - Prefer a controller class (`WP_REST_Controller` subclass) for anything non-trivial.\n  - Read `references\u002Froutes-and-endpoints.md` and `references\u002Fschema.md`.\n\n### 2) Register routes safely (namespaces, methods, permissions)\n\n- Use a unique namespace `vendor\u002Fv1`; avoid `wp\u002F*` unless core.\n- Always provide `permission_callback` (use `__return_true` for public endpoints).\n- Use `WP_REST_Server::READABLE\u002FCREATABLE\u002FEDITABLE\u002FDELETABLE` constants.\n- Return data via `rest_ensure_response()` or `WP_REST_Response`.\n- Return errors via `WP_Error` with an explicit `status`.\n\nRead `references\u002Froutes-and-endpoints.md`.\n\n### 3) Validate\u002Fsanitize request args\n\n- Define `args` with `type`, `default`, `required`, `validate_callback`, `sanitize_callback`.\n- Prefer JSON Schema validation with `rest_validate_value_from_schema` then `rest_sanitize_value_from_schema`.\n- Never read `$_GET`\u002F`$_POST` directly inside endpoints; use `WP_REST_Request`.\n\nRead `references\u002Fschema.md`.\n\n### 4) Responses, fields, and links\n\n- Do **not** remove core fields from default endpoints; add fields instead.\n- Use `register_rest_field` for computed fields; `register_meta` with `show_in_rest` for meta.\n- For `object`\u002F`array` meta, define schema in `show_in_rest.schema`.\n- If you need unfiltered post content (e.g., ToC plugins injecting HTML), request `?context=edit` to access `content.raw` (auth required). Pair with `_fields=content.raw` to keep responses small.\n- Add related resource links via `WP_REST_Response::add_link()`.\n\nRead `references\u002Fresponses-and-fields.md`.\n\n### 5) Authentication and authorization\n\n- For wp-admin\u002FJS: cookie auth + `X-WP-Nonce` (action `wp_rest`).\n- For external clients: application passwords (basic auth) or an auth plugin.\n- Use capability checks in `permission_callback` (authorization), not just “logged in”.\n\nRead `references\u002Fauthentication.md`.\n\n### 6) Client-facing behavior (discovery, pagination, embeds)\n\n- Ensure discovery works (`Link` header or `\u003Clink rel=\"https:\u002F\u002Fapi.w.org\u002F\">`).\n- Support `_fields`, `_embed`, `_method`, `_envelope`, pagination headers.\n- Remember `per_page` is capped at 100.\n\nRead `references\u002Fdiscovery-and-params.md`.\n\n## Verification\n\n- `\u002Fwp-json\u002F` index includes your namespace.\n- `OPTIONS` on your route returns schema (when provided).\n- Endpoint returns expected data; permission failures return 401\u002F403 as appropriate.\n- CPT\u002Ftaxonomy routes appear under `wp\u002Fv2` when `show_in_rest` is true.\n- Run repo lint\u002Ftests and any PHP\u002FJS build steps.\n\n## Failure modes \u002F debugging\n\n- 404: `rest_api_init` not firing, route typo, or permalinks off (use `?rest_route=`).\n- 401\u002F403: missing nonce\u002Fauth, or `permission_callback` too strict.\n- `_doing_it_wrong` for missing `permission_callback`: add it (use `__return_true` if public).\n- Invalid params: missing\u002Fincorrect `args` schema or validation callbacks.\n- Fields missing: `show_in_rest` false, meta not registered, or CPT lacks `custom-fields` support.\n\n## Escalation\n\nIf version support or behavior is unclear, consult the REST API Handbook and core docs before inventing patterns.\n",{"name":5,"description":7,"compatibility":54},"Targets WordPress 7.0+ (PHP 7.4.0+). Filesystem-based agent with bash + node. Some workflows require WP-CLI.","main","4045a2f672c1d4c1b4a5a5712b468c5d73ca6724","third-party\u002Fwp-rest-api",0,"https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise","https:\u002F\u002Fhekivo.github.io\u002Fkivo-wise\u002F","https:\u002F\u002Fgithub.com\u002Fhekivo","https:\u002F\u002Fhekivo.dev","2026-11-08 06:10:39",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add hekivo\u002Fkivo-wise --skill wp-rest-api",{"tool":70,"command":71},"bunx","bunx skills add hekivo\u002Fkivo-wise --skill wp-rest-api",{"tool":73,"command":74},"pnpm","pnpm dlx skills add hekivo\u002Fkivo-wise --skill wp-rest-api","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002FSKILL.md",true,[78,84,88,92,96,100],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fauthentication.md","REFERENCE","参考文档",627,"https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002Freferences\u002Fauthentication.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fcustom-content-types.md",760,"https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002Freferences\u002Fcustom-content-types.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fdiscovery-and-params.md",730,"https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002Freferences\u002Fdiscovery-and-params.md",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fresponses-and-fields.md",1091,"https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002Freferences\u002Fresponses-and-fields.md",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Froutes-and-endpoints.md",1370,"https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002Freferences\u002Froutes-and-endpoints.md",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fschema.md",964,"https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-rest-api\u002Freferences\u002Fschema.md",[105,123,146,165,189,209],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":113,"publishedAt":49},"01M6GKWEA5BMJZ2RPPEEJTCC3N","wp-abilities-api","Use when working with the WordPress Abilities API (wp_register_ability, wp_register_ability_category, \u002Fwp-json\u002Fwp-abilities\u002Fv1\u002F*, @wordpress\u002Fabilities) including defining abilities, categories, meta, REST exposure, and permissions checks for clients.","https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fthird-party\u002Fwp-abilities-api\u002FSKILL.md",[111,112],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[31,114,115,41,48,116,45,30,43,117,118,33,119,40,36,120,121,35,122,34],"wp abilities api","cli","permissions","php","json","node","targets","clients","categories",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":49},"01M6GKWA4GG2BZRFXCR9E73VR7","wp-security-escaping","Use when writing or reviewing code that outputs data, handles input or checks permissions in a WordPress + Acorn project - Blade {{ }} vs {!! !!}, esc_html, esc_attr, esc_url, wp_kses_post, \"&#038; in the URL\", double escaping, sanitize_text_field, nonces, current_user_can, map_meta_cap, permission_callback, $wpdb->prepare, whereRaw, file uploads, escaping ACF values, secrets in .env. For route middleware use acorn-routes-api; for ACF validation use acf-native; for Livewire actions use acorn-livewire.","https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fskills\u002Fwp-security-escaping\u002FSKILL.md",[],[130,131,132,133,134,116,135,45,31,136,137,138,139,37,140,141,142,143,144,145],"security","wp security","wp security escaping","writing","code","actions","secrets","livewire","text","cap","map","project","middleware","native","URL","routes-api",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":49},"01M6GKW6VVY73BMZ3JNDMR4CWZ","wp-phpstan","Use when configuring, running or fixing PHPStan in a WordPress project that uses Acorn - phpstan.neon, baseline, szepeviktor\u002Fphpstan-wordpress stubs, larastan, level raising, \"Cannot access property on mixed\", get_field() types, paths for app\u002F. For Pint or Mago formatting use testing-wp; for runtime errors use roots-debugging.","https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fskills\u002Fwp-phpstan\u002FSKILL.md",[],[153,154,41,47,155,156,40,141,157,158,159,160,161,162,163,164],"wp phpstan","testing","baseline","access","get","neon","runtime","formatting","app","paths","types","errors",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":49},"01M6GKW3JRSRS9N112QFA3SEGT","wp-performance","Use when a WordPress page, query or request is slow or needs profiling - TTFB, slow or N+1 queries, Query Monitor, Server-Timing, wp profile and wp doctor, autoloaded options, Redis object cache hit rate, transients, WP_CACHE_KEY_SALT. Adds the runner and Redis notes on top of the official procedure. For Eloquent query design use acorn-data; for PHP type errors use wp-phpstan.","https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fskills\u002Fwp-performance\u002FSKILL.md",[],[172,173,174,41,175,176,177,178,179,180,181,182,183,40,184,185,186,187,188,164],"performance","wp performance","design","query design","official","notes","monitor","doctor","cache","server","redis","page","queries","runner","query","type","timing",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":195,"publishedAt":49},"01M6GKVZN243XQB5QWZ5ZKMG7P","wp-hooks-lifecycle","Use when adding, moving or debugging WordPress actions and filters in an Acorn project - add_action\u002Fadd_filter priority and accepted_args, where a hook belongs (setup or filters files vs a provider boot()), load order (mu-plugins, plugins_loaded, after_setup_theme, init), when Acorn boots per profile, hooks that never fire on Acorn routes, REST or Livewire requests (template_redirect, wp_head), save_post firing twice in the block editor, the_content priorities. For ACF hooks use acf-native; for provider structure use acorn-stack.","https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fskills\u002Fwp-hooks-lifecycle\u002FSKILL.md",[],[196,197,198,41,199,200,47,135,30,201,137,40,202,203,204,205,206,141,207,208],"lifecycle","hooks","wp hooks lifecycle","init","boot","stack","never","filters","files","provider","structure","filter","theme",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":215,"publishedAt":49},"01M6GKVW81V1Q6HV5DK4B0HTS5","wp-composer-plugins","Use when adding, removing, updating or patching WordPress plugins, mu-plugins or themes through Composer - \"install plugin\", wpackagist versus wp-packages.org, installer-paths, a premium or private plugin zip as a Composer package, Composer patches, DISALLOW_FILE_MODS. For Acorn packages use the matching acorn-* skill; for Lando command wiring use lando-wp.","https:\u002F\u002Fgithub.com\u002Fhekivo\u002Fkivo-wise\u002Fblob\u002Fmain\u002Fskills\u002Fwp-composer-plugins\u002FSKILL.md",[],[216,217,218,41,219,220,221,222,223,224,225,226,40,227,228,229,162,230,231,232],"plugins","composer","wp composer plugins","plugin","packages","package","file","patching","command","install plugin","install","installer","matching","as","themes","org","zip"]