[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-automattic-woocommerce-finalize":3,"mdc-u6zd3v-key":36,"related-repo-automattic-woocommerce-finalize":1086,"related-org-automattic-woocommerce-finalize":1123},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"woocommerce-finalize","audit WooCommerce plugin code health","Pre-release code health and traceability audit for WooCommerce plugins. Runs after code review -- focuses on dead code, duplication, structural complexity, and full-stack traceability analysis. Use when finalizing, auditing, or preparing a WooCommerce plugin for release. Also trigger when the user mentions \"finalize\", \"pre-release audit\", \"code health check\", \"traceability analysis\", or \"ready to ship\". This skill complements security and UX review by catching structural issues and broken data paths that checklist-based reviews miss.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"automattic","Automattic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fautomattic.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Code Review","code-review","tag",{"name":17,"slug":18,"type":15},"WooCommerce","woocommerce",{"name":20,"slug":21,"type":15},"WordPress","wordpress",{"name":23,"slug":24,"type":15},"Code Analysis","code-analysis",5,"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fclaude-woocommerce-toolkit","2026-04-12T04:56:21.142829",null,1,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Claude Code skills and agents for building, reviewing, and maintaining WordPress and WooCommerce plugins","https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fclaude-woocommerce-toolkit\u002Ftree\u002FHEAD\u002Fskills\u002Fwoocommerce-finalize","---\nname: woocommerce-finalize\ndescription: >\n  Pre-release code health and traceability audit for WooCommerce plugins. Runs after\n  code review -- focuses on dead code, duplication, structural complexity, and full-stack\n  traceability analysis. Use when finalizing, auditing, or preparing a WooCommerce plugin\n  for release. Also trigger when the user mentions \"finalize\", \"pre-release audit\",\n  \"code health check\", \"traceability analysis\", or \"ready to ship\". This skill\n  complements security and UX review by catching structural issues and broken data paths\n  that checklist-based reviews miss.\n---\n\n# WooCommerce Plugin Finalization Review\n\nYou are performing a pre-release code health and traceability audit of a WooCommerce\nplugin. This skill focuses on structural concerns that static checklists do not catch.\n\n**This skill runs after code review.** UX compliance and security auditing are handled\nby separate review checklists. Do not duplicate that work here.\n\n## Foundation References\n\nRead these before starting -- they define the standards you are auditing against:\n\n- **`references\u002Fcoding-standards.md`** -- WordPress PHP coding standards, naming, structure\n- **`references\u002Fsecurity.md`** -- Security baseline, database patterns\n- **`references\u002Fwoocommerce-apis.md`** -- HPOS, CRUD, data stores, payment gateway patterns\n- **`references\u002Fux-guidelines.md`** -- UX\u002Fcopy conventions\n\n## Overview\n\nThis skill runs two review tracks, then synthesizes findings into a machine-readable\ntask list.\n\n**The two tracks:**\n1. **Code Health** -- Dead code, duplication, structural complexity\n2. **Traceability Analysis** -- End-to-end verification through every code layer\n\n---\n\n## Step 0: Locate and Inventory the Plugin\n\n1. Find the plugin root (main PHP file with `Plugin Name:` header)\n2. Build complete file inventory (PHP, JS, CSS, templates, assets, config)\n3. Identify architecture (classic PHP+jQuery, React+REST, or hybrid)\n4. Map WooCommerce integration points (settings API, product tabs, checkout, payment, shipping)\n5. Check for custom post types, taxonomies, tables, REST endpoints, AJAX handlers\n\n## Step 0.5: Verify Testing\n\n**Finalization should not begin until tests pass.** If a testing report exists in the\nplugin root (`testing-report.md`), verify:\n\n1. Report is recent (within 12 hours)\n2. Overall status is passing\n3. PHPStan ran at level 7 or higher\n\nIf no testing report exists, recommend the user run their test suite first.\n\n---\n\n## Step 1: Run Review Tracks\n\n### Track 1: Code Health\n\nSweep the entire codebase for structural and maintenance issues that accumulate\nover time and are not caught by standards enforcement during development.\n\n#### Dead Code\n\n- Uncalled functions (defined but never referenced anywhere in the codebase)\n- Unused imports, `use` statements, and variables\n- Commented-out code blocks (more than 3 lines)\n- Unreachable code after unconditional `return`, `throw`, `exit`, `die`\n- Unused class methods (especially private\u002Fprotected with no internal callers)\n\n#### Duplication\n\n- Functions or methods with >80% similar logic (candidates for extraction)\n- Copy-pasted blocks across files (especially validation, sanitization, or API call patterns)\n- Repeated inline SQL or query patterns that should be a shared method\n- Identical or near-identical AJAX\u002FREST handler implementations\n\n#### Structural Complexity\n\n- Functions longer than 50 lines (candidates for decomposition)\n- Nesting deeper than 3 levels (if\u002Fforeach\u002Ftry stacking)\n- God classes with >10 public methods or >300 lines\n- Classes with mixed responsibilities (e.g., a gateway class that also handles admin UI rendering)\n- Circular dependencies between classes\n\nFor each finding: category, file\u002Fline, impact description, suggested fix.\n\n**Severity:**\n\n| Issue | Level |\n|-------|-------|\n| Unreachable code hiding a bug | High |\n| God class \u002F circular dependency | High |\n| >80% duplicated logic across files | Medium |\n| Functions >50 lines | Medium |\n| Commented-out code blocks | Low |\n| Unused private methods | Low |\n\n### Track 2: Traceability Analysis\n\nTrace every UI interaction through the full stack:\n\n```\nUI (HTML\u002FJS) -> AJAX\u002FREST Handler -> Business Logic -> Data Access -> Database\n```\n\nFor each layer boundary:\n- Map all connections (caller -> callee with arguments)\n- Verify connections exist and signatures match\n- Check parameter naming consistency between layers\n- Verify data transformations are symmetric (serialize \u003C-> deserialize)\n- Confirm null\u002Fempty handling at every boundary\n\n#### Payment Gateway Trace Paths (required for payment plugins)\n\nThese specific paths must be fully traced if the plugin is a payment gateway:\n\n1. **Payment flow:** `checkout form (JS) -> process_payment() -> payment API call -> webhook\u002FIPN handler -> order status update`\n2. **Refund flow:** `admin refund button -> process_refund() -> refund API call -> order note + status`\n3. **Settings flow:** `settings form (admin) -> process_admin_options() \u002F save -> get_option() -> checkout form display`\n4. **Token flow:** `tokenize (JS\u002FAPI) -> WC_Payment_Token creation -> saved token display -> token reuse at checkout`\n5. **Webhook flow:** `incoming webhook -> signature verification -> event routing -> order lookup -> status update`\n\nFor each path: document the full chain of calls, flag any broken links, missing\nerror handling, or data that crosses a boundary without validation.\n\nReport: verified paths, broken paths, suspicious paths.\n\n---\n\n## Step 2: Synthesize Task List\n\n### Deliverable: `finalization-tasks.md`\n\nMachine-readable task list for agents or developers:\n\n```markdown\n# Finalization Tasks for [Plugin Name]\n\n## Critical Priority\n### TASK-OPT-001: [Brief description]\n- **File:** [path]\n- **Lines:** [N-M]\n- **Issue:** [What's wrong]\n- **Fix:** [What to do, with before\u002Fafter code]\n- **Status:** [ ] Not started\n\n## High Priority\n### TASK-TRC-001: [Brief description]\n...\n```\n\nTask ID scheme: `TASK-OPT-###` (code health), `TASK-TRC-###` (traceability).\n\n---\n\n## Step 3: Save and Present\n\n1. Save `finalization-tasks.md` to the plugin's output folder\n2. Present a concise summary: count of findings per track, top 3 highest-priority items\n3. Offer to start on highest-priority items\n\n## Important Notes\n\n- Be thorough but honest -- flag false positives as uncertain\n- Give credit for things done well (clean trace paths, well-structured code)\n- Context matters -- admin-only vs customer-facing code changes severity weighting\n- Traceability analysis is the crown jewel -- most hidden bugs live at layer boundaries\n- Do not duplicate UX or security findings -- those are covered by other review skills\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,56,67,74,79,141,147,152,160,184,188,194,230,236,254,272,277,280,286,293,298,305,369,375,398,404,432,437,445,548,554,559,571,576,604,610,615,694,699,704,707,713,725,730,991,1012,1015,1021,1046,1052,1080],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"woocommerce-plugin-finalization-review",[47],{"type":48,"value":49},"text","WooCommerce Plugin Finalization Review",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"You are performing a pre-release code health and traceability audit of a WooCommerce\nplugin. This skill focuses on structural concerns that static checklists do not catch.",{"type":42,"tag":51,"props":57,"children":58},{},[59,65],{"type":42,"tag":60,"props":61,"children":62},"strong",{},[63],{"type":48,"value":64},"This skill runs after code review.",{"type":48,"value":66}," UX compliance and security auditing are handled\nby separate review checklists. Do not duplicate that work here.",{"type":42,"tag":68,"props":69,"children":71},"h2",{"id":70},"foundation-references",[72],{"type":48,"value":73},"Foundation References",{"type":42,"tag":51,"props":75,"children":76},{},[77],{"type":48,"value":78},"Read these before starting -- they define the standards you are auditing against:",{"type":42,"tag":80,"props":81,"children":82},"ul",{},[83,99,113,127],{"type":42,"tag":84,"props":85,"children":86},"li",{},[87,97],{"type":42,"tag":60,"props":88,"children":89},{},[90],{"type":42,"tag":91,"props":92,"children":94},"code",{"className":93},[],[95],{"type":48,"value":96},"references\u002Fcoding-standards.md",{"type":48,"value":98}," -- WordPress PHP coding standards, naming, structure",{"type":42,"tag":84,"props":100,"children":101},{},[102,111],{"type":42,"tag":60,"props":103,"children":104},{},[105],{"type":42,"tag":91,"props":106,"children":108},{"className":107},[],[109],{"type":48,"value":110},"references\u002Fsecurity.md",{"type":48,"value":112}," -- Security baseline, database patterns",{"type":42,"tag":84,"props":114,"children":115},{},[116,125],{"type":42,"tag":60,"props":117,"children":118},{},[119],{"type":42,"tag":91,"props":120,"children":122},{"className":121},[],[123],{"type":48,"value":124},"references\u002Fwoocommerce-apis.md",{"type":48,"value":126}," -- HPOS, CRUD, data stores, payment gateway patterns",{"type":42,"tag":84,"props":128,"children":129},{},[130,139],{"type":42,"tag":60,"props":131,"children":132},{},[133],{"type":42,"tag":91,"props":134,"children":136},{"className":135},[],[137],{"type":48,"value":138},"references\u002Fux-guidelines.md",{"type":48,"value":140}," -- UX\u002Fcopy conventions",{"type":42,"tag":68,"props":142,"children":144},{"id":143},"overview",[145],{"type":48,"value":146},"Overview",{"type":42,"tag":51,"props":148,"children":149},{},[150],{"type":48,"value":151},"This skill runs two review tracks, then synthesizes findings into a machine-readable\ntask list.",{"type":42,"tag":51,"props":153,"children":154},{},[155],{"type":42,"tag":60,"props":156,"children":157},{},[158],{"type":48,"value":159},"The two tracks:",{"type":42,"tag":161,"props":162,"children":163},"ol",{},[164,174],{"type":42,"tag":84,"props":165,"children":166},{},[167,172],{"type":42,"tag":60,"props":168,"children":169},{},[170],{"type":48,"value":171},"Code Health",{"type":48,"value":173}," -- Dead code, duplication, structural complexity",{"type":42,"tag":84,"props":175,"children":176},{},[177,182],{"type":42,"tag":60,"props":178,"children":179},{},[180],{"type":48,"value":181},"Traceability Analysis",{"type":48,"value":183}," -- End-to-end verification through every code layer",{"type":42,"tag":185,"props":186,"children":187},"hr",{},[],{"type":42,"tag":68,"props":189,"children":191},{"id":190},"step-0-locate-and-inventory-the-plugin",[192],{"type":48,"value":193},"Step 0: Locate and Inventory the Plugin",{"type":42,"tag":161,"props":195,"children":196},{},[197,210,215,220,225],{"type":42,"tag":84,"props":198,"children":199},{},[200,202,208],{"type":48,"value":201},"Find the plugin root (main PHP file with ",{"type":42,"tag":91,"props":203,"children":205},{"className":204},[],[206],{"type":48,"value":207},"Plugin Name:",{"type":48,"value":209}," header)",{"type":42,"tag":84,"props":211,"children":212},{},[213],{"type":48,"value":214},"Build complete file inventory (PHP, JS, CSS, templates, assets, config)",{"type":42,"tag":84,"props":216,"children":217},{},[218],{"type":48,"value":219},"Identify architecture (classic PHP+jQuery, React+REST, or hybrid)",{"type":42,"tag":84,"props":221,"children":222},{},[223],{"type":48,"value":224},"Map WooCommerce integration points (settings API, product tabs, checkout, payment, shipping)",{"type":42,"tag":84,"props":226,"children":227},{},[228],{"type":48,"value":229},"Check for custom post types, taxonomies, tables, REST endpoints, AJAX handlers",{"type":42,"tag":68,"props":231,"children":233},{"id":232},"step-05-verify-testing",[234],{"type":48,"value":235},"Step 0.5: Verify Testing",{"type":42,"tag":51,"props":237,"children":238},{},[239,244,246,252],{"type":42,"tag":60,"props":240,"children":241},{},[242],{"type":48,"value":243},"Finalization should not begin until tests pass.",{"type":48,"value":245}," If a testing report exists in the\nplugin root (",{"type":42,"tag":91,"props":247,"children":249},{"className":248},[],[250],{"type":48,"value":251},"testing-report.md",{"type":48,"value":253},"), verify:",{"type":42,"tag":161,"props":255,"children":256},{},[257,262,267],{"type":42,"tag":84,"props":258,"children":259},{},[260],{"type":48,"value":261},"Report is recent (within 12 hours)",{"type":42,"tag":84,"props":263,"children":264},{},[265],{"type":48,"value":266},"Overall status is passing",{"type":42,"tag":84,"props":268,"children":269},{},[270],{"type":48,"value":271},"PHPStan ran at level 7 or higher",{"type":42,"tag":51,"props":273,"children":274},{},[275],{"type":48,"value":276},"If no testing report exists, recommend the user run their test suite first.",{"type":42,"tag":185,"props":278,"children":279},{},[],{"type":42,"tag":68,"props":281,"children":283},{"id":282},"step-1-run-review-tracks",[284],{"type":48,"value":285},"Step 1: Run Review Tracks",{"type":42,"tag":287,"props":288,"children":290},"h3",{"id":289},"track-1-code-health",[291],{"type":48,"value":292},"Track 1: Code Health",{"type":42,"tag":51,"props":294,"children":295},{},[296],{"type":48,"value":297},"Sweep the entire codebase for structural and maintenance issues that accumulate\nover time and are not caught by standards enforcement during development.",{"type":42,"tag":299,"props":300,"children":302},"h4",{"id":301},"dead-code",[303],{"type":48,"value":304},"Dead Code",{"type":42,"tag":80,"props":306,"children":307},{},[308,313,326,331,364],{"type":42,"tag":84,"props":309,"children":310},{},[311],{"type":48,"value":312},"Uncalled functions (defined but never referenced anywhere in the codebase)",{"type":42,"tag":84,"props":314,"children":315},{},[316,318,324],{"type":48,"value":317},"Unused imports, ",{"type":42,"tag":91,"props":319,"children":321},{"className":320},[],[322],{"type":48,"value":323},"use",{"type":48,"value":325}," statements, and variables",{"type":42,"tag":84,"props":327,"children":328},{},[329],{"type":48,"value":330},"Commented-out code blocks (more than 3 lines)",{"type":42,"tag":84,"props":332,"children":333},{},[334,336,342,344,350,351,357,358],{"type":48,"value":335},"Unreachable code after unconditional ",{"type":42,"tag":91,"props":337,"children":339},{"className":338},[],[340],{"type":48,"value":341},"return",{"type":48,"value":343},", ",{"type":42,"tag":91,"props":345,"children":347},{"className":346},[],[348],{"type":48,"value":349},"throw",{"type":48,"value":343},{"type":42,"tag":91,"props":352,"children":354},{"className":353},[],[355],{"type":48,"value":356},"exit",{"type":48,"value":343},{"type":42,"tag":91,"props":359,"children":361},{"className":360},[],[362],{"type":48,"value":363},"die",{"type":42,"tag":84,"props":365,"children":366},{},[367],{"type":48,"value":368},"Unused class methods (especially private\u002Fprotected with no internal callers)",{"type":42,"tag":299,"props":370,"children":372},{"id":371},"duplication",[373],{"type":48,"value":374},"Duplication",{"type":42,"tag":80,"props":376,"children":377},{},[378,383,388,393],{"type":42,"tag":84,"props":379,"children":380},{},[381],{"type":48,"value":382},"Functions or methods with >80% similar logic (candidates for extraction)",{"type":42,"tag":84,"props":384,"children":385},{},[386],{"type":48,"value":387},"Copy-pasted blocks across files (especially validation, sanitization, or API call patterns)",{"type":42,"tag":84,"props":389,"children":390},{},[391],{"type":48,"value":392},"Repeated inline SQL or query patterns that should be a shared method",{"type":42,"tag":84,"props":394,"children":395},{},[396],{"type":48,"value":397},"Identical or near-identical AJAX\u002FREST handler implementations",{"type":42,"tag":299,"props":399,"children":401},{"id":400},"structural-complexity",[402],{"type":48,"value":403},"Structural Complexity",{"type":42,"tag":80,"props":405,"children":406},{},[407,412,417,422,427],{"type":42,"tag":84,"props":408,"children":409},{},[410],{"type":48,"value":411},"Functions longer than 50 lines (candidates for decomposition)",{"type":42,"tag":84,"props":413,"children":414},{},[415],{"type":48,"value":416},"Nesting deeper than 3 levels (if\u002Fforeach\u002Ftry stacking)",{"type":42,"tag":84,"props":418,"children":419},{},[420],{"type":48,"value":421},"God classes with >10 public methods or >300 lines",{"type":42,"tag":84,"props":423,"children":424},{},[425],{"type":48,"value":426},"Classes with mixed responsibilities (e.g., a gateway class that also handles admin UI rendering)",{"type":42,"tag":84,"props":428,"children":429},{},[430],{"type":48,"value":431},"Circular dependencies between classes",{"type":42,"tag":51,"props":433,"children":434},{},[435],{"type":48,"value":436},"For each finding: category, file\u002Fline, impact description, suggested fix.",{"type":42,"tag":51,"props":438,"children":439},{},[440],{"type":42,"tag":60,"props":441,"children":442},{},[443],{"type":48,"value":444},"Severity:",{"type":42,"tag":446,"props":447,"children":448},"table",{},[449,468],{"type":42,"tag":450,"props":451,"children":452},"thead",{},[453],{"type":42,"tag":454,"props":455,"children":456},"tr",{},[457,463],{"type":42,"tag":458,"props":459,"children":460},"th",{},[461],{"type":48,"value":462},"Issue",{"type":42,"tag":458,"props":464,"children":465},{},[466],{"type":48,"value":467},"Level",{"type":42,"tag":469,"props":470,"children":471},"tbody",{},[472,486,498,511,523,536],{"type":42,"tag":454,"props":473,"children":474},{},[475,481],{"type":42,"tag":476,"props":477,"children":478},"td",{},[479],{"type":48,"value":480},"Unreachable code hiding a bug",{"type":42,"tag":476,"props":482,"children":483},{},[484],{"type":48,"value":485},"High",{"type":42,"tag":454,"props":487,"children":488},{},[489,494],{"type":42,"tag":476,"props":490,"children":491},{},[492],{"type":48,"value":493},"God class \u002F circular dependency",{"type":42,"tag":476,"props":495,"children":496},{},[497],{"type":48,"value":485},{"type":42,"tag":454,"props":499,"children":500},{},[501,506],{"type":42,"tag":476,"props":502,"children":503},{},[504],{"type":48,"value":505},">80% duplicated logic across files",{"type":42,"tag":476,"props":507,"children":508},{},[509],{"type":48,"value":510},"Medium",{"type":42,"tag":454,"props":512,"children":513},{},[514,519],{"type":42,"tag":476,"props":515,"children":516},{},[517],{"type":48,"value":518},"Functions >50 lines",{"type":42,"tag":476,"props":520,"children":521},{},[522],{"type":48,"value":510},{"type":42,"tag":454,"props":524,"children":525},{},[526,531],{"type":42,"tag":476,"props":527,"children":528},{},[529],{"type":48,"value":530},"Commented-out code blocks",{"type":42,"tag":476,"props":532,"children":533},{},[534],{"type":48,"value":535},"Low",{"type":42,"tag":454,"props":537,"children":538},{},[539,544],{"type":42,"tag":476,"props":540,"children":541},{},[542],{"type":48,"value":543},"Unused private methods",{"type":42,"tag":476,"props":545,"children":546},{},[547],{"type":48,"value":535},{"type":42,"tag":287,"props":549,"children":551},{"id":550},"track-2-traceability-analysis",[552],{"type":48,"value":553},"Track 2: Traceability Analysis",{"type":42,"tag":51,"props":555,"children":556},{},[557],{"type":48,"value":558},"Trace every UI interaction through the full stack:",{"type":42,"tag":560,"props":561,"children":565},"pre",{"className":562,"code":564,"language":48},[563],"language-text","UI (HTML\u002FJS) -> AJAX\u002FREST Handler -> Business Logic -> Data Access -> Database\n",[566],{"type":42,"tag":91,"props":567,"children":569},{"__ignoreMap":568},"",[570],{"type":48,"value":564},{"type":42,"tag":51,"props":572,"children":573},{},[574],{"type":48,"value":575},"For each layer boundary:",{"type":42,"tag":80,"props":577,"children":578},{},[579,584,589,594,599],{"type":42,"tag":84,"props":580,"children":581},{},[582],{"type":48,"value":583},"Map all connections (caller -> callee with arguments)",{"type":42,"tag":84,"props":585,"children":586},{},[587],{"type":48,"value":588},"Verify connections exist and signatures match",{"type":42,"tag":84,"props":590,"children":591},{},[592],{"type":48,"value":593},"Check parameter naming consistency between layers",{"type":42,"tag":84,"props":595,"children":596},{},[597],{"type":48,"value":598},"Verify data transformations are symmetric (serialize \u003C-> deserialize)",{"type":42,"tag":84,"props":600,"children":601},{},[602],{"type":48,"value":603},"Confirm null\u002Fempty handling at every boundary",{"type":42,"tag":299,"props":605,"children":607},{"id":606},"payment-gateway-trace-paths-required-for-payment-plugins",[608],{"type":48,"value":609},"Payment Gateway Trace Paths (required for payment plugins)",{"type":42,"tag":51,"props":611,"children":612},{},[613],{"type":48,"value":614},"These specific paths must be fully traced if the plugin is a payment gateway:",{"type":42,"tag":161,"props":616,"children":617},{},[618,634,649,664,679],{"type":42,"tag":84,"props":619,"children":620},{},[621,626,628],{"type":42,"tag":60,"props":622,"children":623},{},[624],{"type":48,"value":625},"Payment flow:",{"type":48,"value":627}," ",{"type":42,"tag":91,"props":629,"children":631},{"className":630},[],[632],{"type":48,"value":633},"checkout form (JS) -> process_payment() -> payment API call -> webhook\u002FIPN handler -> order status update",{"type":42,"tag":84,"props":635,"children":636},{},[637,642,643],{"type":42,"tag":60,"props":638,"children":639},{},[640],{"type":48,"value":641},"Refund flow:",{"type":48,"value":627},{"type":42,"tag":91,"props":644,"children":646},{"className":645},[],[647],{"type":48,"value":648},"admin refund button -> process_refund() -> refund API call -> order note + status",{"type":42,"tag":84,"props":650,"children":651},{},[652,657,658],{"type":42,"tag":60,"props":653,"children":654},{},[655],{"type":48,"value":656},"Settings flow:",{"type":48,"value":627},{"type":42,"tag":91,"props":659,"children":661},{"className":660},[],[662],{"type":48,"value":663},"settings form (admin) -> process_admin_options() \u002F save -> get_option() -> checkout form display",{"type":42,"tag":84,"props":665,"children":666},{},[667,672,673],{"type":42,"tag":60,"props":668,"children":669},{},[670],{"type":48,"value":671},"Token flow:",{"type":48,"value":627},{"type":42,"tag":91,"props":674,"children":676},{"className":675},[],[677],{"type":48,"value":678},"tokenize (JS\u002FAPI) -> WC_Payment_Token creation -> saved token display -> token reuse at checkout",{"type":42,"tag":84,"props":680,"children":681},{},[682,687,688],{"type":42,"tag":60,"props":683,"children":684},{},[685],{"type":48,"value":686},"Webhook flow:",{"type":48,"value":627},{"type":42,"tag":91,"props":689,"children":691},{"className":690},[],[692],{"type":48,"value":693},"incoming webhook -> signature verification -> event routing -> order lookup -> status update",{"type":42,"tag":51,"props":695,"children":696},{},[697],{"type":48,"value":698},"For each path: document the full chain of calls, flag any broken links, missing\nerror handling, or data that crosses a boundary without validation.",{"type":42,"tag":51,"props":700,"children":701},{},[702],{"type":48,"value":703},"Report: verified paths, broken paths, suspicious paths.",{"type":42,"tag":185,"props":705,"children":706},{},[],{"type":42,"tag":68,"props":708,"children":710},{"id":709},"step-2-synthesize-task-list",[711],{"type":48,"value":712},"Step 2: Synthesize Task List",{"type":42,"tag":287,"props":714,"children":716},{"id":715},"deliverable-finalization-tasksmd",[717,719],{"type":48,"value":718},"Deliverable: ",{"type":42,"tag":91,"props":720,"children":722},{"className":721},[],[723],{"type":48,"value":724},"finalization-tasks.md",{"type":42,"tag":51,"props":726,"children":727},{},[728],{"type":48,"value":729},"Machine-readable task list for agents or developers:",{"type":42,"tag":560,"props":731,"children":735},{"className":732,"code":733,"language":734,"meta":568,"style":568},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Finalization Tasks for [Plugin Name]\n\n## Critical Priority\n### TASK-OPT-001: [Brief description]\n- **File:** [path]\n- **Lines:** [N-M]\n- **Issue:** [What's wrong]\n- **Fix:** [What to do, with before\u002Fafter code]\n- **Status:** [ ] Not started\n\n## High Priority\n### TASK-TRC-001: [Brief description]\n...\n","markdown",[736],{"type":42,"tag":91,"props":737,"children":738},{"__ignoreMap":568},[739,756,766,780,794,835,869,896,922,948,956,969,982],{"type":42,"tag":740,"props":741,"children":743},"span",{"class":742,"line":29},"line",[744,750],{"type":42,"tag":740,"props":745,"children":747},{"style":746},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[748],{"type":48,"value":749},"# ",{"type":42,"tag":740,"props":751,"children":753},{"style":752},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[754],{"type":48,"value":755},"Finalization Tasks for [Plugin Name]\n",{"type":42,"tag":740,"props":757,"children":759},{"class":742,"line":758},2,[760],{"type":42,"tag":740,"props":761,"children":763},{"emptyLinePlaceholder":762},true,[764],{"type":48,"value":765},"\n",{"type":42,"tag":740,"props":767,"children":769},{"class":742,"line":768},3,[770,775],{"type":42,"tag":740,"props":771,"children":772},{"style":746},[773],{"type":48,"value":774},"## ",{"type":42,"tag":740,"props":776,"children":777},{"style":752},[778],{"type":48,"value":779},"Critical Priority\n",{"type":42,"tag":740,"props":781,"children":783},{"class":742,"line":782},4,[784,789],{"type":42,"tag":740,"props":785,"children":786},{"style":746},[787],{"type":48,"value":788},"### ",{"type":42,"tag":740,"props":790,"children":791},{"style":752},[792],{"type":48,"value":793},"TASK-OPT-001: [Brief description]\n",{"type":42,"tag":740,"props":795,"children":796},{"class":742,"line":25},[797,802,808,814,819,824,830],{"type":42,"tag":740,"props":798,"children":799},{"style":746},[800],{"type":48,"value":801},"-",{"type":42,"tag":740,"props":803,"children":805},{"style":804},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[806],{"type":48,"value":807}," **",{"type":42,"tag":740,"props":809,"children":811},{"style":810},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[812],{"type":48,"value":813},"File:",{"type":42,"tag":740,"props":815,"children":816},{"style":804},[817],{"type":48,"value":818},"**",{"type":42,"tag":740,"props":820,"children":821},{"style":746},[822],{"type":48,"value":823}," [",{"type":42,"tag":740,"props":825,"children":827},{"style":826},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[828],{"type":48,"value":829},"path",{"type":42,"tag":740,"props":831,"children":832},{"style":746},[833],{"type":48,"value":834},"]\n",{"type":42,"tag":740,"props":836,"children":838},{"class":742,"line":837},6,[839,843,847,852,856,860,865],{"type":42,"tag":740,"props":840,"children":841},{"style":746},[842],{"type":48,"value":801},{"type":42,"tag":740,"props":844,"children":845},{"style":804},[846],{"type":48,"value":807},{"type":42,"tag":740,"props":848,"children":849},{"style":810},[850],{"type":48,"value":851},"Lines:",{"type":42,"tag":740,"props":853,"children":854},{"style":804},[855],{"type":48,"value":818},{"type":42,"tag":740,"props":857,"children":858},{"style":746},[859],{"type":48,"value":823},{"type":42,"tag":740,"props":861,"children":862},{"style":826},[863],{"type":48,"value":864},"N-M",{"type":42,"tag":740,"props":866,"children":867},{"style":746},[868],{"type":48,"value":834},{"type":42,"tag":740,"props":870,"children":872},{"class":742,"line":871},7,[873,877,881,886,890],{"type":42,"tag":740,"props":874,"children":875},{"style":746},[876],{"type":48,"value":801},{"type":42,"tag":740,"props":878,"children":879},{"style":804},[880],{"type":48,"value":807},{"type":42,"tag":740,"props":882,"children":883},{"style":810},[884],{"type":48,"value":885},"Issue:",{"type":42,"tag":740,"props":887,"children":888},{"style":804},[889],{"type":48,"value":818},{"type":42,"tag":740,"props":891,"children":893},{"style":892},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[894],{"type":48,"value":895}," [What's wrong]\n",{"type":42,"tag":740,"props":897,"children":899},{"class":742,"line":898},8,[900,904,908,913,917],{"type":42,"tag":740,"props":901,"children":902},{"style":746},[903],{"type":48,"value":801},{"type":42,"tag":740,"props":905,"children":906},{"style":804},[907],{"type":48,"value":807},{"type":42,"tag":740,"props":909,"children":910},{"style":810},[911],{"type":48,"value":912},"Fix:",{"type":42,"tag":740,"props":914,"children":915},{"style":804},[916],{"type":48,"value":818},{"type":42,"tag":740,"props":918,"children":919},{"style":892},[920],{"type":48,"value":921}," [What to do, with before\u002Fafter code]\n",{"type":42,"tag":740,"props":923,"children":925},{"class":742,"line":924},9,[926,930,934,939,943],{"type":42,"tag":740,"props":927,"children":928},{"style":746},[929],{"type":48,"value":801},{"type":42,"tag":740,"props":931,"children":932},{"style":804},[933],{"type":48,"value":807},{"type":42,"tag":740,"props":935,"children":936},{"style":810},[937],{"type":48,"value":938},"Status:",{"type":42,"tag":740,"props":940,"children":941},{"style":804},[942],{"type":48,"value":818},{"type":42,"tag":740,"props":944,"children":945},{"style":892},[946],{"type":48,"value":947}," [ ] Not started\n",{"type":42,"tag":740,"props":949,"children":951},{"class":742,"line":950},10,[952],{"type":42,"tag":740,"props":953,"children":954},{"emptyLinePlaceholder":762},[955],{"type":48,"value":765},{"type":42,"tag":740,"props":957,"children":959},{"class":742,"line":958},11,[960,964],{"type":42,"tag":740,"props":961,"children":962},{"style":746},[963],{"type":48,"value":774},{"type":42,"tag":740,"props":965,"children":966},{"style":752},[967],{"type":48,"value":968},"High Priority\n",{"type":42,"tag":740,"props":970,"children":972},{"class":742,"line":971},12,[973,977],{"type":42,"tag":740,"props":974,"children":975},{"style":746},[976],{"type":48,"value":788},{"type":42,"tag":740,"props":978,"children":979},{"style":752},[980],{"type":48,"value":981},"TASK-TRC-001: [Brief description]\n",{"type":42,"tag":740,"props":983,"children":985},{"class":742,"line":984},13,[986],{"type":42,"tag":740,"props":987,"children":988},{"style":892},[989],{"type":48,"value":990},"...\n",{"type":42,"tag":51,"props":992,"children":993},{},[994,996,1002,1004,1010],{"type":48,"value":995},"Task ID scheme: ",{"type":42,"tag":91,"props":997,"children":999},{"className":998},[],[1000],{"type":48,"value":1001},"TASK-OPT-###",{"type":48,"value":1003}," (code health), ",{"type":42,"tag":91,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":48,"value":1009},"TASK-TRC-###",{"type":48,"value":1011}," (traceability).",{"type":42,"tag":185,"props":1013,"children":1014},{},[],{"type":42,"tag":68,"props":1016,"children":1018},{"id":1017},"step-3-save-and-present",[1019],{"type":48,"value":1020},"Step 3: Save and Present",{"type":42,"tag":161,"props":1022,"children":1023},{},[1024,1036,1041],{"type":42,"tag":84,"props":1025,"children":1026},{},[1027,1029,1034],{"type":48,"value":1028},"Save ",{"type":42,"tag":91,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":48,"value":724},{"type":48,"value":1035}," to the plugin's output folder",{"type":42,"tag":84,"props":1037,"children":1038},{},[1039],{"type":48,"value":1040},"Present a concise summary: count of findings per track, top 3 highest-priority items",{"type":42,"tag":84,"props":1042,"children":1043},{},[1044],{"type":48,"value":1045},"Offer to start on highest-priority items",{"type":42,"tag":68,"props":1047,"children":1049},{"id":1048},"important-notes",[1050],{"type":48,"value":1051},"Important Notes",{"type":42,"tag":80,"props":1053,"children":1054},{},[1055,1060,1065,1070,1075],{"type":42,"tag":84,"props":1056,"children":1057},{},[1058],{"type":48,"value":1059},"Be thorough but honest -- flag false positives as uncertain",{"type":42,"tag":84,"props":1061,"children":1062},{},[1063],{"type":48,"value":1064},"Give credit for things done well (clean trace paths, well-structured code)",{"type":42,"tag":84,"props":1066,"children":1067},{},[1068],{"type":48,"value":1069},"Context matters -- admin-only vs customer-facing code changes severity weighting",{"type":42,"tag":84,"props":1071,"children":1072},{},[1073],{"type":48,"value":1074},"Traceability analysis is the crown jewel -- most hidden bugs live at layer boundaries",{"type":42,"tag":84,"props":1076,"children":1077},{},[1078],{"type":48,"value":1079},"Do not duplicate UX or security findings -- those are covered by other review skills",{"type":42,"tag":1081,"props":1082,"children":1083},"style",{},[1084],{"type":48,"value":1085},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1087,"total":768},[1088,1095,1110],{"slug":4,"name":4,"fn":5,"description":6,"org":1089,"tags":1090,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1091,1092,1093,1094],{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"slug":1096,"name":1096,"fn":1097,"description":1098,"org":1099,"tags":1100,"stars":25,"repoUrl":26,"updatedAt":1109},"woocommerce-plugin-dev","develop WooCommerce plugins","Comprehensive WooCommerce plugin development skill that enforces WordPress and WooCommerce coding standards, security best practices, and end-to-end testing for every file created. Use this skill whenever the user wants to create, scaffold, build, or start a WooCommerce plugin, WooCommerce extension, or WordPress plugin that integrates with WooCommerce. Also trigger when the user mentions \"WooCommerce plugin\", \"Woo extension\", \"WooCommerce add-on\", \"payment gateway plugin\", \"shipping method plugin\", or any plugin that touches orders, products, carts, checkout, or the WooCommerce REST API. Even if the user just says \"start a new plugin\" in the context of a WooCommerce project, use this skill. This skill should be the first thing consulted before writing any code for a WooCommerce plugin project.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1101,1104,1107,1108],{"name":1102,"slug":1103,"type":15},"Plugin Development","plugin-development",{"name":1105,"slug":1106,"type":15},"Testing","testing",{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},"2026-04-12T04:56:22.485222",{"slug":1111,"name":1111,"fn":1112,"description":1113,"org":1114,"tags":1115,"stars":25,"repoUrl":26,"updatedAt":1122},"woocommerce-upgrade-safety","review WooCommerce plugin upgrades for safety","Pre-release upgrade safety review for WooCommerce plugins. Validates database migrations, settings compatibility, payment token preservation, hook deprecation, rollback safety, and merchant communication for version upgrades. Use before any minor or major version release, when a release includes database schema changes, settings restructuring, new feature declarations (HPOS, blocks), deprecated hooks\u002Ffilters, or payment flow changes. Also trigger when reviewing a diff that shows install class changes, dbDelta calls, payment token modifications, hook removals, or minimum version bumps. Skip for patch releases that contain only bug fixes with no structural changes.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1116,1117,1120,1121],{"name":13,"slug":14,"type":15},{"name":1118,"slug":1119,"type":15},"Risk Assessment","risk-assessment",{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},"2026-04-12T04:56:23.847888",{"items":1124,"total":1310},[1125,1146,1163,1177,1194,1209,1221,1236,1253,1264,1279,1295],{"slug":1126,"name":1126,"fn":1127,"description":1128,"org":1129,"tags":1130,"stars":1143,"repoUrl":1144,"updatedAt":1145},"annotate","collect visual feedback with browser annotation tools","Open a browser with visual annotation tools. The user clicks elements on their site and leaves feedback — the agent reads annotations and makes changes. Use this when the user wants to point at specific elements to fix, tweak, or redesign.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1131,1134,1137,1140],{"name":1132,"slug":1133,"type":15},"Frontend","frontend",{"name":1135,"slug":1136,"type":15},"Productivity","productivity",{"name":1138,"slug":1139,"type":15},"UX Copy","ux-copy",{"name":1141,"slug":1142,"type":15},"UX Design","ux-design",484,"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fstudio","2026-05-06T05:40:01.516544",{"slug":1147,"name":1147,"fn":1148,"description":1149,"org":1150,"tags":1151,"stars":1143,"repoUrl":1144,"updatedAt":1162},"block-content","write editable WordPress block markup","Write editable WordPress block markup for local Studio sites, including core\u002Fhtml limits, block-theme layout rules, full-width sections, validation, and skeleton-first page\u002FCSS recipes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1152,1155,1158,1161],{"name":1153,"slug":1154,"type":15},"Block Editor","block-editor",{"name":1156,"slug":1157,"type":15},"CSS","css",{"name":1159,"slug":1160,"type":15},"HTML","html",{"name":20,"slug":21,"type":15},"2026-05-27T07:01:55.629681",{"slug":1164,"name":1164,"fn":1165,"description":1166,"org":1167,"tags":1168,"stars":1143,"repoUrl":1144,"updatedAt":1176},"hosting-plans-helper","provide WordPress.com hosting plan information","Answer WordPress.com plan, pricing, upgrade, and feature-tier questions (plan names, what each tier unlocks — plugins, themes, custom code, SSH, hosting — and current prices) from authoritative live data. Load before answering ANY plan, pricing, or feature-gating question; never answer these from memory.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1169,1172,1175],{"name":1170,"slug":1171,"type":15},"Pricing","pricing",{"name":1173,"slug":1174,"type":15},"Reference","reference",{"name":20,"slug":21,"type":15},"2026-07-02T07:42:33.654791",{"slug":1178,"name":1178,"fn":1179,"description":1180,"org":1181,"tags":1182,"stars":1143,"repoUrl":1144,"updatedAt":1193},"liberate","migrate websites to WordPress","Import and rebuild a website from a closed platform (Wix, Squarespace, Webflow, Shopify, GoDaddy, Hostinger, HubSpot, Weebly) into a Studio WordPress site. Extracts pages\u002Fposts\u002Fproducts + media, then reconstructs the design as editable blocks + WooCommerce OR as a high-fidelity replica theme. Invoke when the user wants to migrate, import, liberate, or rebuild a site from one of these platforms.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1183,1186,1189,1192],{"name":1184,"slug":1185,"type":15},"CMS","cms",{"name":1187,"slug":1188,"type":15},"Migration","migration",{"name":1190,"slug":1191,"type":15},"Web Development","web-development",{"name":20,"slug":21,"type":15},"2026-07-09T06:47:33.454311",{"slug":1195,"name":1195,"fn":1196,"description":1197,"org":1198,"tags":1199,"stars":1143,"repoUrl":1144,"updatedAt":1208},"need-for-speed","run frontend performance audits for WordPress sites","Run a frontend performance audit on a WordPress site and get actionable optimization recommendations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1200,1203,1204,1207],{"name":1201,"slug":1202,"type":15},"Audit","audit",{"name":1132,"slug":1133,"type":15},{"name":1205,"slug":1206,"type":15},"Performance","performance",{"name":20,"slug":21,"type":15},"2026-05-06T05:40:06.433267",{"slug":1210,"name":1210,"fn":1211,"description":1212,"org":1213,"tags":1214,"stars":1143,"repoUrl":1144,"updatedAt":1220},"plugin-recommendations","recommend WordPress plugins for site features","Choose recommended plugins and plugin-provided blocks for features core WordPress blocks do not cover - ecommerce (WooCommerce), forms and newsletters (Jetpack), online courses and quizzes (Sensei LMS), polls, surveys and ratings (Crowdsignal), spam protection (Akismet) - while keeping generated content editable and avoiding raw HTML fallbacks. Any request to sell products or build a shop, store, or storefront requires WooCommerce with products.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1215,1218,1219],{"name":1216,"slug":1217,"type":15},"Content Creation","content-creation",{"name":1102,"slug":1103,"type":15},{"name":20,"slug":21,"type":15},"2026-05-27T07:01:58.249105",{"slug":1222,"name":1222,"fn":1223,"description":1224,"org":1225,"tags":1226,"stars":1143,"repoUrl":1144,"updatedAt":1235},"rank-me-up","run on-page SEO audits for WordPress sites","Run an on-page SEO audit on a WordPress site and get actionable recommendations to improve search visibility.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1227,1228,1231,1234],{"name":1201,"slug":1202,"type":15},{"name":1229,"slug":1230,"type":15},"Marketing","marketing",{"name":1232,"slug":1233,"type":15},"SEO","seo",{"name":20,"slug":21,"type":15},"2026-05-06T05:40:05.196367",{"slug":1237,"name":1237,"fn":1238,"description":1239,"org":1240,"tags":1241,"stars":1143,"repoUrl":1144,"updatedAt":1252},"site-spec","gather specifications for new WordPress sites","Gather the site name and layout preference before building a WordPress site. Run this before creating any new site.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1242,1245,1248,1251],{"name":1243,"slug":1244,"type":15},"Design","design",{"name":1246,"slug":1247,"type":15},"Product Management","product-management",{"name":1249,"slug":1250,"type":15},"Specs","specs",{"name":20,"slug":21,"type":15},"2026-05-06T05:40:02.739409",{"slug":1254,"name":1254,"fn":1255,"description":1256,"org":1257,"tags":1258,"stars":1143,"repoUrl":1144,"updatedAt":1263},"studio-cli","manage local WordPress sites with Studio CLI","Use the Studio CLI to manage local WordPress sites, authentication, and preview sites. Invoke this skill when you need to run Studio CLI commands, manage sites, or troubleshoot site issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1259,1262],{"name":1260,"slug":1261,"type":15},"CLI","cli",{"name":20,"slug":21,"type":15},"2026-04-06T18:02:57.150231",{"slug":1265,"name":1265,"fn":1266,"description":1267,"org":1268,"tags":1269,"stars":1143,"repoUrl":1144,"updatedAt":1278},"taxonomist","optimize WordPress category taxonomy","Analyze and optimize a WordPress site's category taxonomy. Exports all posts, uses AI to suggest an improved category structure — merging duplicates, retiring dead categories, creating missing ones, writing descriptions, and re-categorizing posts. Run this when the user wants to clean up or improve their categories.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1270,1273,1276,1277],{"name":1271,"slug":1272,"type":15},"Content Strategy","content-strategy",{"name":1274,"slug":1275,"type":15},"Data Cleaning","data-cleaning",{"name":1232,"slug":1233,"type":15},{"name":20,"slug":21,"type":15},"2026-05-06T05:40:03.966799",{"slug":1280,"name":1280,"fn":1281,"description":1282,"org":1283,"tags":1284,"stars":1143,"repoUrl":1144,"updatedAt":1294},"visual-design","plan and execute visual design direction","Plan and execute high-quality visual direction for site creation, redesign, layout, typography, color, motion, and visual polish.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1285,1288,1289,1292],{"name":1286,"slug":1287,"type":15},"Animation","animation",{"name":1243,"slug":1244,"type":15},{"name":1290,"slug":1291,"type":15},"Typography","typography",{"name":1293,"slug":1280,"type":15},"Visual Design","2026-07-24T05:40:57.887452",{"slug":1296,"name":1296,"fn":1297,"description":1298,"org":1299,"tags":1300,"stars":1143,"repoUrl":1144,"updatedAt":1309},"visual-polish","verify and polish website visual design","Verify and polish a built or redesigned site by diagnosing rendered-DOM issues against intent and fixing them in a planned, batched screenshot-and-fix loop.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1301,1304,1305,1308],{"name":1302,"slug":1303,"type":15},"Debugging","debugging",{"name":1132,"slug":1133,"type":15},{"name":1306,"slug":1307,"type":15},"Screenshots","screenshots",{"name":1293,"slug":1280,"type":15},"2026-06-06T07:09:59.809812",81]