[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70DBAFFRMET3MA4Z1SAHK37":3,"skill-same:01M70DBAFFRMET3MA4Z1SAHK37":114},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":14,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M70DBAFFRMET3MA4Z1SAHK37","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.","Spaghetti-Dojo\u002Ftosuto","Spaghetti-Dojo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F171473277?v=4","01M70D7HTSB1T6F7P71CN4CA4K","Spaghetti Dojo","01M70D7HVFH1GMH0R0ZFAZRXM6",0,"GPL-2.0","https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"development","block","wp block development","rendering","scripts","json","build","migrations","callback","test","create","type","when","workflows","use","render","wordpress","register","attributes","build and test","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.\"\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},"main","c5c9f6be96a3086970a7b9e89f09a99a9bf5d585",".claude\u002Fskills\u002Fwp-block-development","https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto","https:\u002F\u002Fspaghetti-dojo.github.io\u002Ftosuto\u002F","https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo","A place where to experiment","2026-05-27 16:04:29",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add Spaghetti-Dojo\u002Ftosuto --skill wp-block-development",{"tool":58,"command":59},"bunx","bunx skills add Spaghetti-Dojo\u002Ftosuto --skill wp-block-development",{"tool":61,"command":62},"pnpm","pnpm dlx skills add Spaghetti-Dojo\u002Ftosuto --skill wp-block-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002FSKILL.md",true,[66,72,76,80,84,88,92,96,100,104,108],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fattributes-and-serialization.md","REFERENCE","参考文档",759,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fattributes-and-serialization.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fblock-json.md",2336,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fblock-json.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fcreating-new-blocks.md",1594,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fcreating-new-blocks.md",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fdebugging.md",1372,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fdebugging.md",{"path":85,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fdeprecations.md",665,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fdeprecations.md",{"path":89,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fdynamic-rendering.md",685,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fdynamic-rendering.md",{"path":93,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Finner-blocks.md",1196,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Finner-blocks.md",{"path":97,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fregistration.md",932,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fregistration.md",{"path":101,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fsupports-and-wrappers.md",512,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Fsupports-and-wrappers.md",{"path":105,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Ftooling-and-testing.md",928,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Freferences\u002Ftooling-and-testing.md",{"path":109,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Flist_blocks.mjs","SCRIPT","脚本",2889,"https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-block-development\u002Fscripts\u002Flist_blocks.mjs",[115,133,160,190,210,232],{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":126,"publishedAt":39},"01M70DDJXEN0BM5TZPB5GF9TA6","wpds","Use when building UIs leveraging the WordPress Design System (WPDS) and its components, tokens, patterns, etc.","https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwpds\u002FSKILL.md",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[117,35,127,128,129,33,130,31,131,132],"system","tokens","design","design system","patterns","components",{"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":142,"publishedAt":39},"01M70DDG4PMCJVM2MAH4BQ4F6C","wp-wpcli-and-ops","Use when working with WP-CLI (wp) for WordPress operations: safe search-replace, db export\u002Fimport, plugin\u002Ftheme\u002Fuser\u002Fcontent management, cron, cache flushing, multisite, and scripting\u002Fautomation with wp-cli.yml.","https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-wpcli-and-ops\u002FSKILL.md",[139],{"categoryNo":140,"categoryName":141,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000023","Skill与智能体开发",[143,144,145,146,147,148,35,149,150,33,31,151,152,153,154,155,156,157,158,159],"ops","wp wpcli and ops","import","theme","for","db","search","wp-cli","automation","cache","with","plugin","cli","scripting","operations","safe","export",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":174,"publishedAt":39},"01M70DDD8SMSRYCT6CMZAZ79V8","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\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-rest-api\u002FSKILL.md",[166,169],{"categoryNo":167,"categoryName":168,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":170,"categoryName":171,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[175,176,177,178,179,36,35,180,181,182,33,183,184,31,185,186,187,188,27,189],"wp rest api","api","REST","rest api","show","authentication","Meta","schema","taxonomies","debugging","route","shaping","controller","endpoints","argument",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":196,"publishedAt":39},"01M70DDB298BG7A74YZ3XEWHQY","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\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-project-triage\u002FSKILL.md",[],[197,198,199,200,146,201,35,202,203,204,33,32,31,205,206,154,207,24,208,209],"project","wp project triage","triage","deterministic","core","Guardrails","tests","inspection","you","version","tooling","repository","report",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":217,"publishedAt":39},"01M70DD924A87SK645B5HKE39A","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\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-plugin-development\u002FSKILL.md",[216],{"categoryNo":167,"categoryName":168,"taxonomyType":124,"taxonomyTypeDesc":125},[19,218,219,154,220,35,221,222,33,31,223,224,176,225,226,227,228,229,230,231],"plugin development","wp plugin development","uninstall","packaging","hooks","tasks","architecture","capabilities","admin","storage","release","settings","plugins","data storage",{"skillNo":233,"name":234,"nameZh":6,"description":235,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":236,"categories":237,"keywords":238,"publishedAt":39},"01M70DD5JTD6MBJV9KAQBZ5191","wp-playground","Use for WordPress Playground workflows: fast disposable WP instances in the browser or locally via @wp-playground\u002Fcli (server, run-blueprint, build-snapshot), auto-mounting plugins\u002Fthemes, switching WP\u002FPHP versions, blueprints, and debugging (Xdebug).","https:\u002F\u002Fgithub.com\u002FSpaghetti-Dojo\u002Ftosuto\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwp-playground\u002FSKILL.md",[],[239,240,241,147,35,242,243,33,244,245,184,32,246,247,155,248,25,249,250,230],"playground","wp playground","instances","themes","auto","switching","Blueprint","browser","server","via","run","snapshot"]