[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C21MTGCK3YH84KMFNJEDJN":3,"skill-same:01M6C21MTGCK3YH84KMFNJEDJN":111},{"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":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":47,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6C21MTGCK3YH84KMFNJEDJN","wp-block-development",null,"Use when developing WordPress (Gutenberg) blocks: block.json metadata, register_block_type(_from_metadata), attributes\u002Fserialization, supports, dynamic rendering (render.php\u002Frender_callback), deprecations\u002Fmigrations, viewScript vs viewScriptModule, and @wordpress\u002Fscripts\u002F@wordpress\u002Fcreate-block build and test workflows.","gambitph\u002FCimo","gambitph","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3227089?v=4","01M6C1ZD8129MTRC23K53VJ45E","Gambit Technologies","01M6C1ZDCJPEHP3CKCWNG7HDVV",2,"GPL-2.0","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"development","wp block development","cli","build and test","wordpress","test","workflows","create","metadata","serialization","Bash","php","json","filesystem","node","use","2026-11-10 10:12:30",false,"---\nname: wp-block-development\ndescription: \"Use when developing WordPress (Gutenberg) blocks: block.json metadata, register_block_type(_from_metadata), attributes\u002Fserialization, supports, dynamic rendering (render.php\u002Frender_callback), deprecations\u002Fmigrations, viewScript vs viewScriptModule, and @wordpress\u002Fscripts\u002F@wordpress\u002Fcreate-block build and test workflows.\"\ncompatibility: \"Targets WordPress 7.0+ (PHP 7.4.0+). Filesystem-based agent with bash + node. Some workflows require WP-CLI.\"\n---\n\n# WP Block Development\n\n## When to use\n\nUse this skill for block work such as:\n\n- creating a new block, or updating an existing one\n- changing `block.json` (scripts\u002Fstyles\u002Fsupports\u002Fattributes\u002Frender\u002FviewScriptModule)\n- fixing “block invalid \u002F not saving \u002F attributes not persisting”\n- adding dynamic rendering (`render.php` \u002F `render_callback`)\n- block deprecations and migrations (`deprecated` versions)\n- build tooling for blocks (`@wordpress\u002Fscripts`, `@wordpress\u002Fcreate-block`, `wp-env`)\n\n## Inputs required\n\n- Repo root and target (plugin vs theme vs full site).\n- The block name\u002Fnamespace and where it lives (path to `block.json` if known).\n- Target WordPress version range (especially if using modules \u002F `viewScriptModule`).\n\n## Procedure\n\n### 0) Triage and locate blocks\n\n1. Run triage:\n   - `node skills\u002Fwp-project-triage\u002Fscripts\u002Fdetect_wp_project.mjs`\n2. List blocks (deterministic scan):\n   - `node skills\u002Fwp-block-development\u002Fscripts\u002Flist_blocks.mjs`\n3. Identify the block root (directory containing `block.json`) you’re changing.\n\nIf this repo is a full site (`wp-content\u002F` present), be explicit about *which* plugin\u002Ftheme contains the block.\n\n### 1) Create a new block (if needed)\n\nIf you are creating a new block, prefer scaffolding rather than hand-rolling structure:\n\n- Use `@wordpress\u002Fcreate-block` to scaffold a modern block\u002Fplugin setup.\n- If you need Interactivity API from day 1, use the interactive template.\n\nRead:\n- `references\u002Fcreating-new-blocks.md`\n\nAfter scaffolding:\n\n1. Re-run the block list script and confirm the new block root.\n2. Continue with the remaining steps (model choice, metadata, registration, serialization).\n\n### 2) Ensure apiVersion 3 (WordPress 6.9+)\n\nWordPress 6.9 enforces `apiVersion: 3` in the block.json schema. Blocks with apiVersion 2 or lower trigger console warnings when `SCRIPT_DEBUG` is enabled.\n\n**Why this matters:**\n- WordPress 7.0 will run the post editor in an iframe regardless of block apiVersion.\n- apiVersion 3 ensures your block works correctly inside the iframed editor (style isolation, viewport units, media queries).\n\n**Migration:** Changing from version 2 to 3 is usually as simple as updating the `apiVersion` field in `block.json`. However:\n- Test in a local environment with the iframe editor enabled.\n- Ensure any style handles are included in `block.json` (styles missing from the iframe won't apply).\n- Third-party scripts attached to a specific `window` may have scoping issues.\n\nRead:\n- `references\u002Fblock-json.md` (apiVersion and schema details)\n\n### 3) Pick the right block model\n\n- **Static block** (markup saved into post content): implement `save()`; keep attributes serialization stable.\n- **Dynamic block** (server-rendered): use `render` in `block.json` (or `render_callback` in PHP) and keep `save()` minimal or `null`.\n- **Interactive frontend behavior**:\n  - Prefer `viewScriptModule` for modern module-based view scripts where supported.\n  - If you're working primarily on `data-wp-*` directives or stores, also use `wp-interactivity-api`.\n\n### 4) Update `block.json` safely\n\nMake changes in the block’s `block.json`, then confirm registration matches metadata.\n\nFor field-by-field guidance, read:\n- `references\u002Fblock-json.md`\n\nCommon pitfalls:\n\n- changing `name` breaks compatibility (treat it as stable API)\n- changing saved markup without adding `deprecated` causes “Invalid block”\n- adding attributes without defining source\u002Fserialization correctly causes “attribute not saving”\n\n### 5) Register the block (server-side preferred)\n\nPrefer PHP registration using metadata, especially when:\n\n- you need dynamic rendering\n- you need translations (`wp_set_script_translations`)\n- you need conditional asset loading\n\nRead and apply:\n- `references\u002Fregistration.md`\n\n### 6) Implement edit\u002Fsave\u002Frender patterns\n\nFollow wrapper attribute best practices:\n\n- Editor: `useBlockProps()`\n- Static save: `useBlockProps.save()`\n- Dynamic render (PHP): `get_block_wrapper_attributes()`\n\nRead:\n- `references\u002Fsupports-and-wrappers.md`\n- `references\u002Fdynamic-rendering.md` (if dynamic)\n\n### 7) Inner blocks (block composition)\n\nIf your block is a “container” that nests other blocks, treat Inner Blocks as a first-class feature:\n\n- Use `useInnerBlocksProps()` to integrate inner blocks with wrapper props.\n- Keep migrations in mind if you change inner markup.\n\nRead:\n- `references\u002Finner-blocks.md`\n\n### 8) Attributes and serialization\n\nBefore changing attributes:\n\n- confirm where the attribute value lives (comment delimiter vs HTML vs context)\n- avoid the deprecated `meta` attribute source\n\nRead:\n- `references\u002Fattributes-and-serialization.md`\n\n### 9) Migrations and deprecations (avoid \"Invalid block\")\n\nIf you change saved markup or attributes:\n\n1. Add a `deprecated` entry (newest → oldest).\n2. Provide `save` for old versions and an optional `migrate` to normalize attributes.\n\nRead:\n- `references\u002Fdeprecations.md`\n\n### 10) Tooling and verification commands\n\nPrefer whatever the repo already uses:\n\n- `@wordpress\u002Fscripts` (common) → run existing npm scripts\n- `wp-env` (common) → use for local WP + E2E\n\nRead:\n- `references\u002Ftooling-and-testing.md`\n\n## Verification\n\n- Block appears in inserter and inserts successfully.\n- Saving + reloading does not create “Invalid block”.\n- Frontend output matches expectations (static: saved markup; dynamic: server output).\n- Assets load where expected (editor vs frontend).\n- Run the repo’s lint\u002Fbuild\u002Ftests that triage recommends.\n\n## Failure modes \u002F debugging\n\nIf something fails, start here:\n\n- `references\u002Fdebugging.md` (common failures + fastest checks)\n- `references\u002Fattributes-and-serialization.md` (attributes not saving)\n- `references\u002Fdeprecations.md` (invalid block after change)\n\n## Escalation\n\nIf you’re uncertain about upstream behavior\u002Fversion support, consult canonical docs first:\n\n- WordPress Developer Resources (Block Editor Handbook, Theme Handbook, Plugin Handbook)\n- Gutenberg repo docs for bleeding-edge behaviors\n","# WP Block Development\n\n## When to use\n\nUse this skill for block work such as:\n\n- creating a new block, or updating an existing one\n- changing `block.json` (scripts\u002Fstyles\u002Fsupports\u002Fattributes\u002Frender\u002FviewScriptModule)\n- fixing “block invalid \u002F not saving \u002F attributes not persisting”\n- adding dynamic rendering (`render.php` \u002F `render_callback`)\n- block deprecations and migrations (`deprecated` versions)\n- build tooling for blocks (`@wordpress\u002Fscripts`, `@wordpress\u002Fcreate-block`, `wp-env`)\n\n## Inputs required\n\n- Repo root and target (plugin vs theme vs full site).\n- The block name\u002Fnamespace and where it lives (path to `block.json` if known).\n- Target WordPress version range (especially if using modules \u002F `viewScriptModule`).\n\n## Procedure\n\n### 0) Triage and locate blocks\n\n1. Run triage:\n   - `node skills\u002Fwp-project-triage\u002Fscripts\u002Fdetect_wp_project.mjs`\n2. List blocks (deterministic scan):\n   - `node skills\u002Fwp-block-development\u002Fscripts\u002Flist_blocks.mjs`\n3. Identify the block root (directory containing `block.json`) you’re changing.\n\nIf this repo is a full site (`wp-content\u002F` present), be explicit about *which* plugin\u002Ftheme contains the block.\n\n### 1) Create a new block (if needed)\n\nIf you are creating a new block, prefer scaffolding rather than hand-rolling structure:\n\n- Use `@wordpress\u002Fcreate-block` to scaffold a modern block\u002Fplugin setup.\n- If you need Interactivity API from day 1, use the interactive template.\n\nRead:\n- `references\u002Fcreating-new-blocks.md`\n\nAfter scaffolding:\n\n1. Re-run the block list script and confirm the new block root.\n2. Continue with the remaining steps (model choice, metadata, registration, serialization).\n\n### 2) Ensure apiVersion 3 (WordPress 6.9+)\n\nWordPress 6.9 enforces `apiVersion: 3` in the block.json schema. Blocks with apiVersion 2 or lower trigger console warnings when `SCRIPT_DEBUG` is enabled.\n\n**Why this matters:**\n- WordPress 7.0 will run the post editor in an iframe regardless of block apiVersion.\n- apiVersion 3 ensures your block works correctly inside the iframed editor (style isolation, viewport units, media queries).\n\n**Migration:** Changing from version 2 to 3 is usually as simple as updating the `apiVersion` field in `block.json`. However:\n- Test in a local environment with the iframe editor enabled.\n- Ensure any style handles are included in `block.json` (styles missing from the iframe won't apply).\n- Third-party scripts attached to a specific `window` may have scoping issues.\n\nRead:\n- `references\u002Fblock-json.md` (apiVersion and schema details)\n\n### 3) Pick the right block model\n\n- **Static block** (markup saved into post content): implement `save()`; keep attributes serialization stable.\n- **Dynamic block** (server-rendered): use `render` in `block.json` (or `render_callback` in PHP) and keep `save()` minimal or `null`.\n- **Interactive frontend behavior**:\n  - Prefer `viewScriptModule` for modern module-based view scripts where supported.\n  - If you're working primarily on `data-wp-*` directives or stores, also use `wp-interactivity-api`.\n\n### 4) Update `block.json` safely\n\nMake changes in the block’s `block.json`, then confirm registration matches metadata.\n\nFor field-by-field guidance, read:\n- `references\u002Fblock-json.md`\n\nCommon pitfalls:\n\n- changing `name` breaks compatibility (treat it as stable API)\n- changing saved markup without adding `deprecated` causes “Invalid block”\n- adding attributes without defining source\u002Fserialization correctly causes “attribute not saving”\n\n### 5) Register the block (server-side preferred)\n\nPrefer PHP registration using metadata, especially when:\n\n- you need dynamic rendering\n- you need translations (`wp_set_script_translations`)\n- you need conditional asset loading\n\nRead and apply:\n- `references\u002Fregistration.md`\n\n### 6) Implement edit\u002Fsave\u002Frender patterns\n\nFollow wrapper attribute best practices:\n\n- Editor: `useBlockProps()`\n- Static save: `useBlockProps.save()`\n- Dynamic render (PHP): `get_block_wrapper_attributes()`\n\nRead:\n- `references\u002Fsupports-and-wrappers.md`\n- `references\u002Fdynamic-rendering.md` (if dynamic)\n\n### 7) Inner blocks (block composition)\n\nIf your block is a “container” that nests other blocks, treat Inner Blocks as a first-class feature:\n\n- Use `useInnerBlocksProps()` to integrate inner blocks with wrapper props.\n- Keep migrations in mind if you change inner markup.\n\nRead:\n- `references\u002Finner-blocks.md`\n\n### 8) Attributes and serialization\n\nBefore changing attributes:\n\n- confirm where the attribute value lives (comment delimiter vs HTML vs context)\n- avoid the deprecated `meta` attribute source\n\nRead:\n- `references\u002Fattributes-and-serialization.md`\n\n### 9) Migrations and deprecations (avoid \"Invalid block\")\n\nIf you change saved markup or attributes:\n\n1. Add a `deprecated` entry (newest → oldest).\n2. Provide `save` for old versions and an optional `migrate` to normalize attributes.\n\nRead:\n- `references\u002Fdeprecations.md`\n\n### 10) Tooling and verification commands\n\nPrefer whatever the repo already uses:\n\n- `@wordpress\u002Fscripts` (common) → run existing npm scripts\n- `wp-env` (common) → use for local WP + E2E\n\nRead:\n- `references\u002Ftooling-and-testing.md`\n\n## Verification\n\n- Block appears in inserter and inserts successfully.\n- Saving + reloading does not create “Invalid block”.\n- Frontend output matches expectations (static: saved markup; dynamic: server output).\n- Assets load where expected (editor vs frontend).\n- Run the repo’s lint\u002Fbuild\u002Ftests that triage recommends.\n\n## Failure modes \u002F debugging\n\nIf something fails, start here:\n\n- `references\u002Fdebugging.md` (common failures + fastest checks)\n- `references\u002Fattributes-and-serialization.md` (attributes not saving)\n- `references\u002Fdeprecations.md` (invalid block after change)\n\n## Escalation\n\nIf you’re uncertain about upstream behavior\u002Fversion support, consult canonical docs first:\n\n- WordPress Developer Resources (Block Editor Handbook, Theme Handbook, Plugin Handbook)\n- Gutenberg repo docs for bleeding-edge behaviors\n",{"name":5,"description":7,"compatibility":40},"Targets WordPress 7.0+ (PHP 7.4.0+). Filesystem-based agent with bash + node. Some workflows require WP-CLI.","develop","647b3a86ad96843d26f677d200372b67b7336254",".cursor\u002Fskills\u002Fwp-block-development",0,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo","https:\u002F\u002Fgithub.com\u002Fgambitph","https:\u002F\u002Fwpstackable.com","2026-10-15 14:34:26",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add gambitph\u002FCimo --skill wp-block-development",{"tool":55,"command":56},"bunx","bunx skills add gambitph\u002FCimo --skill wp-block-development",{"tool":58,"command":59},"pnpm","pnpm dlx skills add gambitph\u002FCimo --skill wp-block-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002FSKILL.md",true,[63,69,73,77,81,85,89,93,97,101,105],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Fattributes-and-serialization.md","REFERENCE","参考文档",759,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fattributes-and-serialization.md",{"path":70,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fblock-json.md",2336,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fblock-json.md",{"path":74,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fcreating-new-blocks.md",1594,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fcreating-new-blocks.md",{"path":78,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fdebugging.md",1372,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fdebugging.md",{"path":82,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fdeprecations.md",665,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fdeprecations.md",{"path":86,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fdynamic-rendering.md",685,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fdynamic-rendering.md",{"path":90,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Finner-blocks.md",1196,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Finner-blocks.md",{"path":94,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fregistration.md",932,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fregistration.md",{"path":98,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fsupports-and-wrappers.md",512,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fsupports-and-wrappers.md",{"path":102,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Ftooling-and-testing.md",928,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Freferences\u002Ftooling-and-testing.md",{"path":106,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Flist_blocks.mjs","SCRIPT","脚本",2889,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-block-development\u002Fscripts\u002Flist_blocks.mjs",[112,133,156,173,193,211],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":128,"publishedAt":35},"01M6C22DH5PD92NQAX0Y2X0YA6","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[118,123],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[129,130,131,132,34],"writing","writing for agents","documents","editing",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":145,"publishedAt":35},"01M6C22APBD07T1MBH301FJKA6","wp-rest-api","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.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-rest-api\u002FSKILL.md",[139,142],{"categoryNo":140,"categoryName":141,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":143,"categoryName":144,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000030","开发工程师",[146,147,148,149,30,29,32,33,150,34,151,152,153,154,25,23,21,155],"REST","api","wp rest api","debugging","controller","Meta","validation","authentication","shaping","schema",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":35},"01M6C228355FYPDSH157J7962Z","wp-project-triage","Use when you need a deterministic inspection of a WordPress repository (plugin\u002Ftheme\u002Fblock theme\u002FWP core\u002FGutenberg\u002Ffull site) including tooling\u002Ftests\u002Fversion hints, and a structured JSON report to guide workflows and guardrails.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-project-triage\u002FSKILL.md",[],[163,164,165,31,30,29,166,167,32,168,169,170,25,23,21,171,34,172,33],"triage","wp project triage","site","Guardrails","repository","report","core","plugin","version","guide",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":182,"publishedAt":35},"01M6C225595ZG6MPCRGKA7FSNZ","wp-plugin-directory-guidelines","Use when reviewing WordPress plugins for GPL compliance, checking license headers or compatibility, evaluating upsell\u002Ffreemium\u002Ftrialware patterns, validating plugin naming or trademark rules, checking plugin slugs, understanding why a plugin was rejected from WordPress.org, or answering any question about the 18 WordPress.org Plugin Directory guidelines — even if the user doesn't mention 'guidelines' explicitly.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-plugin-directory-guidelines\u002FSKILL.md",[179],{"categoryNo":180,"categoryName":181,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000037","律师与法务",[183,184,170,185,30,186,187,188,189,190,191,192,23,34],"wp plugin directory guidelines","guidelines","directory","user","question","Rules","why","compliance","plugins","license",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":200,"publishedAt":35},"01M6C221V1PYQWWN2CVKSDDHC9","wp-plugin-development","Use when developing WordPress plugins: architecture and hooks, activation\u002Fdeactivation\u002Funinstall, admin UI and Settings API, data storage, cron\u002Ftasks, security (nonces\u002Fcapabilities\u002Fsanitization\u002Fescaping), and release packaging.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-plugin-development\u002FSKILL.md",[199],{"categoryNo":140,"categoryName":141,"taxonomyType":121,"taxonomyTypeDesc":122},[170,201,19,202,23,21,203,25,204,34,205,33,32,29,147,206,207,208,209,210],"wp plugin development","storage","uninstall","packaging","settings","admin","capabilities","release","tasks","architecture",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":215,"categories":216,"keywords":221,"publishedAt":35},"01M6C21YFXNYHM5B9ZN6JGCAJW","wp-performance","Use when investigating or improving WordPress performance (backend-only agent): profiling and measurement (WP-CLI profile\u002Fdoctor, Server-Timing, Query Monitor via REST headers), database\u002Fquery optimization, autoloaded options, object caching, cron, HTTP API calls, and safe verification.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-performance\u002FSKILL.md",[217,218],{"categoryNo":140,"categoryName":141,"taxonomyType":121,"taxonomyTypeDesc":122},{"categoryNo":219,"categoryName":220,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000023","Skill与智能体开发",[222,223,147,224,34,225,226,30,227,146,228,229,230,231,232,233,234,23,235,21],"wp performance","performance","backend","profile","profiling","cron","Optimization","server","database","verification","doctor","monitor","http","safe"]