[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-automattic-generating-patterns":3,"mdc-uzswqu-key":33,"related-org-automattic-generating-patterns":2188,"related-repo-automattic-generating-patterns":2375},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"generating-patterns","generate WordPress block patterns","Guidelines and examples for generating WordPress block patterns — load this when creating patterns for themes",{"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],{"name":13,"slug":14,"type":15},"WordPress","wordpress","tag",{"name":17,"slug":18,"type":15},"Themes","themes",{"name":20,"slug":21,"type":15},"Block Editor","block-editor",31,"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fdata-liberation-agent","2026-06-08T08:17:51.946787",null,1,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"Extract content from closed web platforms into WordPress-compatible WXR files.","https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fdata-liberation-agent\u002Ftree\u002FHEAD\u002Fskills\u002Fgenerating-patterns","---\nname: generating-patterns\ndescription: Guidelines and examples for generating WordPress block patterns — load this when creating patterns for themes\ndisable-model-invocation: true\n---\n\n## When to use me\n\nUse this skill when generating block patterns for a theme.\nLoad this skill alongside `creating-themes` or `editing-themes` when patterns are part of the work.\n\n## Page-builder content (Shopify\u002FReplo, Wix, Squarespace, Shogun)\n\nPage-builder storefronts emit **div-soup** markup (no semantic `\u003Csection>` tags) and rich, repeated components that are easy to flatten into generic `static`\u002F`columns` blocks. Don't. The section spec's `Interaction model` carries the real shape — honor it and pick the matching template in `references\u002Fsection-mapping.md`:\n\n- **product-card-row** — repeated cards with image + title + **price** (+ Add-to-Cart). The price is the discriminator vs. `project-card-grid`\u002F`columns`. Keep prices verbatim; link to the local product page or WooCommerce.\n- **review-grid** — repeated star-rating + quote + name columns (Okendo\u002FJunip\u002FYotpo\u002FReplo carousels). Render the rating as a literal `★` glyph run so it survives without a JS widget; render the captured reviews as a static, mobile-safe grid. **Review\u002Ftestimonial text is NEVER synthesized — source-captured verbatim or placeholdered, full stop.** It is sourced (in order) from `spec.reviews` (the deterministic `review-extract.ts` extractor populates it from the served HTML), the inline carousel markup in the captured HTML, embedded JSON (`schema.org` `Review`, warmup blobs), or the widget's plain-GET JSON API. \"The reviews are a JS widget\" is usually false — page-builder carousels render every slide inline. Only when ALL of those fail is the band placeholdered + flagged. See the `review-grid` template and *Missing-content fallback* in `references\u002Fsection-mapping.md`.\n- **app-download** — heading + copy beside app-store \u002F Google Play **badge images**. Reuse the captured trademark badges as linked images; never redraw them as text buttons.\n- **cover-with-headline (email-capture variant)** — a hero whose CTA is an email signup form (\"Get 10% Off\" + field + submit). Render a visual `core\u002Fsearch` input+button (forms have no backend in the replica) and stub the real integration in the framework-widget table.\n\nThe extractor now captures page-builder CDN imagery (Replo `assets.replocdn.com`, Shogun, image proxies) regardless of host or file extension. The faithful imagery is in the media library — use it. Do not fall back to unrelated product photos for hero\u002Flifestyle\u002Fapp slots.\n\n## ⛔ Cardinal rule: ALL emitted copy is source-verbatim or placeholdered — NEVER paraphrased\n\n**Every word of visible text a pattern emits — headings, subheads, body paragraphs, list items, button\u002Flabel text, review quotes — MUST be the source's captured text, reproduced verbatim, OR a clearly-marked missing-content placeholder + run-report flag. Never synthesize, paraphrase, reword, \"tighten,\" \"improve,\" or invent copy to fill a slot.** This is not limited to reviews; it governs *all* prose. Reproducing copy verbatim is the whole point of a replica — paraphrase is a fidelity lie that silently rewrites the source's own words.\n\nWhere the source text lives, in order:\n- **Headings \u002F labels:** `spec.headings`, `spec.buttonLabels`.\n- **Body paragraphs \u002F list items:** `spec.bodyText` (every captured `\u003Cp>`\u002F`\u003Cli>` text node, verbatim — see `SectionSpec.bodyText`). If a template slot wants body copy that is **not** in `spec.bodyText`, do NOT write your own — re-read the section's captured `html\u002F\u003Cslug>.html` and pull the real line. If the source genuinely has no text for that slot, leave the slot out or use the missing-content placeholder; never fabricate.\n- **Review\u002Ftestimonial quotes, authors, categories:** `spec.reviews` → inline carousel HTML → embedded JSON → widget GET API (see `review-grid`).\n\nAllowed differences from the raw source byte stream are **only** mechanical renderings: HTML-entity encoding (`&#8217;`, `&nbsp;`, `&amp;`), whitespace collapse, and typographic-glyph folding (smart quotes ↔ straight, en\u002Fem dash ↔ hyphen, ellipsis char ↔ `...`). Anything beyond that — a different word, a reordered clause, a \"punchier\" rewrite — is paraphrase and is **rejected**.\n\nThis is enforced deterministically: `liberate_validate_artifacts` checks emitted text against the captured source. Headings must each be contained in a single `spec.expectedText` entry; **body paragraphs must be substantially contained in `spec.expectedText` ∪ `spec.bodyText` — a reworded paragraph HARD-FAILS the gate** (not a warning). You may not bypass that gate. An earlier getsnooz build paraphrased section body copy (\"Real fan-powered sound — no loops…\", \"Your best shut-eye, guaranteed.\") and invented three testimonials while the real lines sat in the captured HTML the whole time — exactly the failure this rule and gate exist to stop.\n\n## Missing-content fallback (do NOT fabricate substitutes — images OR text)\n\nIf a section spec references an image that could not be captured (cross-origin, 403\u002Fexpired CDN, rejected content-type), emit a **sized placeholder** that preserves the layout slot, **flag it** in `run-report.json` (`details.provenanceFlags` + bump `summary.provenanceFlags`), and **never** substitute an unrelated image as if it were the source. A confident wrong image hides the extraction failure and produces a plausible-but-wrong replica — the exact mistake behind the first getsnooz build.\n\nThe same rule governs **all text** (per the cardinal rule above), **most acutely review\u002Ftestimonial copy.** Never synthesize, paraphrase, or invent review quotes, author names, ratings, category labels, headings, or body paragraphs. They are source-captured verbatim or rendered as a clearly-marked placeholder (`[review text not captured]`, or for body copy `[copy not captured]`) plus a run-report flag — never fabricated, and never bypass the `liberate_validate_artifacts` provenance gate (text ⊆ captured source). An earlier getsnooz build invented three testimonials AND paraphrased section body copy, and manually skipped that gate; the real text was in the captured HTML the entire time. See *Missing-media fallback*, *Missing-content fallback (review\u002Ftestimonial text)*, and the `review-grid` sourcing order in `references\u002Fsection-mapping.md`.\n\n## Pattern Generation Rules\n\n- Place pattern files in the `patterns\u002F` directory\n- Each pattern file must start with a PHP comment header registering the pattern\n- Use descriptive, kebab-case filenames (e.g., `hero-split.php`, `faq-accordion.php`)\n- Never use emojis in any pattern content\n- **Copy is source-verbatim, never invented** (see the Cardinal rule above). This overrides any \"write realistic placeholder copy\" habit from generic landing-page generation: for a *replica*, the copy IS the source's copy, reproduced verbatim from `spec.headings` \u002F `spec.bodyText` \u002F `spec.buttonLabels` \u002F `spec.reviews` (or placeholdered + flagged). Do not write your own headlines, body, or CTAs.\n- Alternate between light and dark section backgrounds to create visual rhythm\n- Patterns must be self-contained — do not use `\u003Cinner-blocks>` or assume external context\n\n## Pattern File Header (required)\n\nEvery pattern file must begin with this PHP comment block:\n\n```php\n\u003C?php\n\u002F**\n * Title: Hero Split\n * Slug: theme-slug\u002Fhero-split\n * Categories: featured, banner\n * Keywords: hero, split, cta\n * Block Types: core\u002Ftemplate-part\u002Fcontent\n *\u002F\n?>\n```\n\n- `Title`: Human-readable name shown in the inserter\n- `Slug`: Must be `theme-slug\u002Fpattern-name` using the theme's text domain\n- `Categories`: Comma-separated list (use WordPress defaults: `featured`, `banner`, `text`, `gallery`, `call-to-action`, `about`, `team`, `testimonials`, `contact`, `footer`, `header`)\n- `Keywords`: Comma-separated search terms for discoverability\n- `Block Types`: Optional — restricts where the pattern appears\n\n## Pattern Set for Landing Pages\n\nWhen generating patterns for a landing page theme, include a varied set that covers the full page flow. Choose patterns that match the site type and audience — not every site needs the same set.\n\nRecommended baseline (adapt per site type):\n\n1. **Hero section** — the first thing visitors see; must set the tone and include a primary CTA\n2. **Social proof \u002F logos** — build trust early with client logos or partner badges\n3. **Feature grid** — highlight key offerings or services\n4. **Content with media** — pair text with imagery to explain the value proposition\n5. **Testimonials or case studies** — reinforce credibility\n6. **FAQ** — address common objections\n7. **Final CTA** — closing section with a clear conversion action\n\n## Header patterns (replica): source logo + nav, NEVER page-list\n\nIf a pattern reconstructs the site header (or a header part), it MUST mirror the SOURCE header:\n\n- Use the source's real **logo image** (`core\u002Fimage` \u002F `core\u002Fsite-logo`), not `core\u002Fsite-title` text and not a product image.\n- Use explicit `core\u002Fnavigation-link`s for the source's **top-level primary menu only** (label + href). NEVER use `core\u002Fpage-list` — it dumps every published WP page (Sample Page, Checkout, account, recall pages) as junk that does not reflect the source's menu.\n- Drop mega-menu sub-links, the mobile-drawer duplicate, and social\u002Faccount\u002Fcart\u002Fsearch affordances.\n- Preserve the source's top **announcement\u002Futility bar** when present.\n- Apply the site's **self-hosted source fonts** (e.g. the heading typeface), not a system fallback — see the scaffold's font-capture (`@font-face` → `assets\u002Ffonts\u002F` → `theme.json` fontFamilies).\n\n## CTA Guidelines\n\n- Every landing page must have at least two CTA patterns: one in the hero, one as a closing section\n- Use `wp:buttons` with clear, action-oriented text (\"Get Started\", \"Book a Demo\", \"View Portfolio\")\n- Style CTAs to stand out — use the theme's accent color, generous padding, and prominent placement\n- Avoid vague labels like \"Click Here\" or \"Learn More\" when a specific action is available\n- For sticky CTAs, use a full-width Group with a fixed position class and high z-index\n\n## Layout Examples\n\n### Hero with left text \u002F right image\n\nTwo-column split: heading + paragraph + CTA button on the left, full-height image on the right. Use `wp:columns` with a 55\u002F45 or 60\u002F40 split. The text column gets vertical centering; the image column uses `object-fit: cover` at full height.\n\n```\nColumns (align: full)\n  └── Column (width: 55%, verticalAlignment: center)\n  │     └── Heading (h1)\n  │     └── Paragraph\n  │     └── Buttons\n  └── Column (width: 45%)\n        └── Image (style: height 100%, object-fit: cover)\n```\n\n### Z-pattern layout\n\nAlternate the position of text and image across consecutive sections to create a natural Z reading flow. Odd sections place text left \u002F image right; even sections flip to image left \u002F text right.\n\n```\nSection 1 — Columns (align: wide)\n  └── Column (text) | Column (image)\n\nSection 2 — Columns (align: wide)\n  └── Column (image) | Column (text)\n\nSection 3 — Columns (align: wide)\n  └── Column (text) | Column (image)\n```\n\nUse alternating background colors (light\u002Fdark) between sections to reinforce separation.\n\n### 3-column feature grid\n\nThree equal-width columns, each containing an icon or image, a heading, a paragraph, and an optional CTA. Use the `equal-cards` pattern from the card-layouts reference.\n\n```\nColumns (className: \"equal-cards\", align: wide)\n  └── Column (width: 33.33%, verticalAlignment: stretch)\n  │     └── Group\n  │           └── Image (icon or illustration)\n  │           └── Heading (h3)\n  │           └── Paragraph\n  │           └── Buttons (className: \"cta-bottom\") [optional]\n  └── Column (width: 33.33%, verticalAlignment: stretch)\n  │     └── Group\n  │           └── ...\n  └── Column (width: 33.33%, verticalAlignment: stretch)\n        └── Group\n              └── ...\n```\n\n### Alternating light\u002Fdark sections\n\nWrap each section in a `wp:group` with a contrasting background color. Pull colors from the theme palette — use `has-{color}-background-color` classes or inline `backgroundColor` attributes. Alternate between the theme's base and contrast colors.\n\n```\nGroup (align: full, backgroundColor: base)\n  └── [section content]\n\nGroup (align: full, backgroundColor: contrast)\n  └── [section content with inverted text color]\n\nGroup (align: full, backgroundColor: base)\n  └── [section content]\n```\n\n### Sticky CTA button\n\nA fixed-position bar at the bottom of the viewport with a single CTA. Use a full-width Group with custom CSS class for sticky positioning.\n\n```\nGroup (align: full, className: \"sticky-cta\")\n  └── Buttons (layout: center)\n        └── Button (\"Get Started Now\")\n```\n\nRequired CSS (style.css):\n```css\n.sticky-cta {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  z-index: 50;\n  padding: 1rem;\n}\n```\n\n### Accordion FAQ\n\nUse the `wp:details` block for collapsible FAQ items inside a constrained-width Group.\n\n```\nGroup (align: wide, layout: constrained)\n  └── Heading (h2, \"Frequently Asked Questions\")\n  └── Details (summary: \"Question one?\")\n  │     └── Paragraph (answer)\n  └── Details (summary: \"Question two?\")\n  │     └── Paragraph (answer)\n  └── Details (summary: \"Question three?\")\n        └── Paragraph (answer)\n```\n\n### Logos as social proof\n\nA single row of client or partner logos. Use a `wp:columns` block with evenly spaced columns, each containing a centered image. Keep logos grayscale or muted to avoid visual clutter.\n\n```\nGroup (align: wide)\n  └── Paragraph (align: center, \"Trusted by leading companies\")\n  └── Columns (align: wide)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n```\n\n## Site-Type Pattern Suggestions\n\nNot every site needs the same patterns. Adapt the set to the context:\n\n- **Portfolio**: Hero with full-bleed image, project gallery grid, about\u002Fbio section, contact CTA\n- **SaaS \u002F Product**: Hero split, logo bar, feature grid, pricing table, testimonials, FAQ, final CTA\n- **Restaurant \u002F Local**: Hero with cover image, menu highlights, hours\u002Flocation, reservation CTA, gallery\n- **Agency \u002F Studio**: Hero with reel or case study, services grid, case study cards, team, contact\n- **Blog \u002F Magazine**: Hero with featured post, category grid, newsletter signup, recent posts\n- **E-commerce**: Hero with product showcase, category grid, bestsellers, testimonials, promo banner\n\n## Return envelope (orchestrator-internal)\n\nWhen invoked as a builder subagent by the `\u002Fliberate` or `\u002Freplicate-with-blocks` orchestrator, you MUST return your output as a structured JSON envelope — not free-form prose:\n\n```json\n{\n  \"patterns\": [\n    { \"slug\": \"theme-slug\u002Fhero-split\", \"php\": \"\u003C?php\\n\u002F**\\n * Title: Hero Split\\n * ...\\n *\u002F\\n?>\\n\u003C!-- wp:group ... -->\" }\n  ],\n  \"sitewideFlags\": [],\n  \"notes\": []\n}\n```\n\n- `patterns` — array of objects with `slug` (the pattern's registered slug, matching the file header) and `php` (the full pattern file contents as a string, including the PHP comment header).\n- `sitewideFlags` — optional array of strings naming sitewide concerns (e.g. `\"commercial-font-reckless\"`, `\"missing-mobile-hero-image\"`).\n- `notes` — optional array of strings with builder observations or deferred items.\n\nSection markup comes from the `references\u002Fsection-mapping.md` catalog. Emit all source-derived **text** as literal, pre-escaped HTML in the markup itself — HTML-entity-escape `&`, `\u003C`, `>` (and quotes inside attributes) at authoring time. Do **not** wrap visible text in `\u003C?php echo esc_html(…) ?>` \u002F `esc_attr(…)`: `liberate_validate_artifacts` sanctions exactly TWO PHP forms — the pattern's doc-comment header and `\u003C?php echo esc_url( get_theme_file_uri('assets\u002F…') ); ?>` for theme-shipped asset paths (see `section-mapping.md`) — and treats ANY other `\u003C?php`, including `esc_html('literal')`, as injection. So: visible text → literal escaped HTML; theme-asset URLs → `esc_url( get_theme_file_uri(…) )`; nothing else emits PHP. The result must pass `liberate_validate_artifacts` (escaping\u002Finjection + provenance). A malformed or partial return — missing `patterns`, wrong types, raw `\u003C?php` outside the two sanctioned forms — is treated as a builder failure and triggers a retry or sequential fallback. Never return partial results silently.",{"data":34,"body":36},{"name":4,"description":6,"disable-model-invocation":35},true,{"type":37,"children":38},"root",[39,48,71,77,130,280,293,299,316,321,432,480,522,528,577,645,651,758,764,769,862,1004,1010,1015,1020,1094,1100,1105,1222,1228,1264,1270,1277,1298,1308,1314,1319,1328,1333,1339,1352,1361,1367,1396,1405,1411,1416,1425,1430,1594,1600,1613,1622,1628,1640,1649,1655,1660,1723,1729,1749,1993,2054,2182],{"type":40,"tag":41,"props":42,"children":44},"element","h2",{"id":43},"when-to-use-me",[45],{"type":46,"value":47},"text","When to use me",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,54,61,63,69],{"type":46,"value":53},"Use this skill when generating block patterns for a theme.\nLoad this skill alongside ",{"type":40,"tag":55,"props":56,"children":58},"code",{"className":57},[],[59],{"type":46,"value":60},"creating-themes",{"type":46,"value":62}," or ",{"type":40,"tag":55,"props":64,"children":66},{"className":65},[],[67],{"type":46,"value":68},"editing-themes",{"type":46,"value":70}," when patterns are part of the work.",{"type":40,"tag":41,"props":72,"children":74},{"id":73},"page-builder-content-shopifyreplo-wix-squarespace-shogun",[75],{"type":46,"value":76},"Page-builder content (Shopify\u002FReplo, Wix, Squarespace, Shogun)",{"type":40,"tag":49,"props":78,"children":79},{},[80,82,88,90,96,98,104,106,112,114,120,122,128],{"type":46,"value":81},"Page-builder storefronts emit ",{"type":40,"tag":83,"props":84,"children":85},"strong",{},[86],{"type":46,"value":87},"div-soup",{"type":46,"value":89}," markup (no semantic ",{"type":40,"tag":55,"props":91,"children":93},{"className":92},[],[94],{"type":46,"value":95},"\u003Csection>",{"type":46,"value":97}," tags) and rich, repeated components that are easy to flatten into generic ",{"type":40,"tag":55,"props":99,"children":101},{"className":100},[],[102],{"type":46,"value":103},"static",{"type":46,"value":105},"\u002F",{"type":40,"tag":55,"props":107,"children":109},{"className":108},[],[110],{"type":46,"value":111},"columns",{"type":46,"value":113}," blocks. Don't. The section spec's ",{"type":40,"tag":55,"props":115,"children":117},{"className":116},[],[118],{"type":46,"value":119},"Interaction model",{"type":46,"value":121}," carries the real shape — honor it and pick the matching template in ",{"type":40,"tag":55,"props":123,"children":125},{"className":124},[],[126],{"type":46,"value":127},"references\u002Fsection-mapping.md",{"type":46,"value":129},":",{"type":40,"tag":131,"props":132,"children":133},"ul",{},[134,166,245,262],{"type":40,"tag":135,"props":136,"children":137},"li",{},[138,143,145,150,152,158,159,164],{"type":40,"tag":83,"props":139,"children":140},{},[141],{"type":46,"value":142},"product-card-row",{"type":46,"value":144}," — repeated cards with image + title + ",{"type":40,"tag":83,"props":146,"children":147},{},[148],{"type":46,"value":149},"price",{"type":46,"value":151}," (+ Add-to-Cart). The price is the discriminator vs. ",{"type":40,"tag":55,"props":153,"children":155},{"className":154},[],[156],{"type":46,"value":157},"project-card-grid",{"type":46,"value":105},{"type":40,"tag":55,"props":160,"children":162},{"className":161},[],[163],{"type":46,"value":111},{"type":46,"value":165},". Keep prices verbatim; link to the local product page or WooCommerce.",{"type":40,"tag":135,"props":167,"children":168},{},[169,174,176,182,184,189,191,197,199,205,207,213,215,221,223,228,230,236,238,243],{"type":40,"tag":83,"props":170,"children":171},{},[172],{"type":46,"value":173},"review-grid",{"type":46,"value":175}," — repeated star-rating + quote + name columns (Okendo\u002FJunip\u002FYotpo\u002FReplo carousels). Render the rating as a literal ",{"type":40,"tag":55,"props":177,"children":179},{"className":178},[],[180],{"type":46,"value":181},"★",{"type":46,"value":183}," glyph run so it survives without a JS widget; render the captured reviews as a static, mobile-safe grid. ",{"type":40,"tag":83,"props":185,"children":186},{},[187],{"type":46,"value":188},"Review\u002Ftestimonial text is NEVER synthesized — source-captured verbatim or placeholdered, full stop.",{"type":46,"value":190}," It is sourced (in order) from ",{"type":40,"tag":55,"props":192,"children":194},{"className":193},[],[195],{"type":46,"value":196},"spec.reviews",{"type":46,"value":198}," (the deterministic ",{"type":40,"tag":55,"props":200,"children":202},{"className":201},[],[203],{"type":46,"value":204},"review-extract.ts",{"type":46,"value":206}," extractor populates it from the served HTML), the inline carousel markup in the captured HTML, embedded JSON (",{"type":40,"tag":55,"props":208,"children":210},{"className":209},[],[211],{"type":46,"value":212},"schema.org",{"type":46,"value":214}," ",{"type":40,"tag":55,"props":216,"children":218},{"className":217},[],[219],{"type":46,"value":220},"Review",{"type":46,"value":222},", warmup blobs), or the widget's plain-GET JSON API. \"The reviews are a JS widget\" is usually false — page-builder carousels render every slide inline. Only when ALL of those fail is the band placeholdered + flagged. See the ",{"type":40,"tag":55,"props":224,"children":226},{"className":225},[],[227],{"type":46,"value":173},{"type":46,"value":229}," template and ",{"type":40,"tag":231,"props":232,"children":233},"em",{},[234],{"type":46,"value":235},"Missing-content fallback",{"type":46,"value":237}," in ",{"type":40,"tag":55,"props":239,"children":241},{"className":240},[],[242],{"type":46,"value":127},{"type":46,"value":244},".",{"type":40,"tag":135,"props":246,"children":247},{},[248,253,255,260],{"type":40,"tag":83,"props":249,"children":250},{},[251],{"type":46,"value":252},"app-download",{"type":46,"value":254}," — heading + copy beside app-store \u002F Google Play ",{"type":40,"tag":83,"props":256,"children":257},{},[258],{"type":46,"value":259},"badge images",{"type":46,"value":261},". Reuse the captured trademark badges as linked images; never redraw them as text buttons.",{"type":40,"tag":135,"props":263,"children":264},{},[265,270,272,278],{"type":40,"tag":83,"props":266,"children":267},{},[268],{"type":46,"value":269},"cover-with-headline (email-capture variant)",{"type":46,"value":271}," — a hero whose CTA is an email signup form (\"Get 10% Off\" + field + submit). Render a visual ",{"type":40,"tag":55,"props":273,"children":275},{"className":274},[],[276],{"type":46,"value":277},"core\u002Fsearch",{"type":46,"value":279}," input+button (forms have no backend in the replica) and stub the real integration in the framework-widget table.",{"type":40,"tag":49,"props":281,"children":282},{},[283,285,291],{"type":46,"value":284},"The extractor now captures page-builder CDN imagery (Replo ",{"type":40,"tag":55,"props":286,"children":288},{"className":287},[],[289],{"type":46,"value":290},"assets.replocdn.com",{"type":46,"value":292},", Shogun, image proxies) regardless of host or file extension. The faithful imagery is in the media library — use it. Do not fall back to unrelated product photos for hero\u002Flifestyle\u002Fapp slots.",{"type":40,"tag":41,"props":294,"children":296},{"id":295},"cardinal-rule-all-emitted-copy-is-source-verbatim-or-placeholdered-never-paraphrased",[297],{"type":46,"value":298},"⛔ Cardinal rule: ALL emitted copy is source-verbatim or placeholdered — NEVER paraphrased",{"type":40,"tag":49,"props":300,"children":301},{},[302,307,309,314],{"type":40,"tag":83,"props":303,"children":304},{},[305],{"type":46,"value":306},"Every word of visible text a pattern emits — headings, subheads, body paragraphs, list items, button\u002Flabel text, review quotes — MUST be the source's captured text, reproduced verbatim, OR a clearly-marked missing-content placeholder + run-report flag. Never synthesize, paraphrase, reword, \"tighten,\" \"improve,\" or invent copy to fill a slot.",{"type":46,"value":308}," This is not limited to reviews; it governs ",{"type":40,"tag":231,"props":310,"children":311},{},[312],{"type":46,"value":313},"all",{"type":46,"value":315}," prose. Reproducing copy verbatim is the whole point of a replica — paraphrase is a fidelity lie that silently rewrites the source's own words.",{"type":40,"tag":49,"props":317,"children":318},{},[319],{"type":46,"value":320},"Where the source text lives, in order:",{"type":40,"tag":131,"props":322,"children":323},{},[324,348,409],{"type":40,"tag":135,"props":325,"children":326},{},[327,332,333,339,341,347],{"type":40,"tag":83,"props":328,"children":329},{},[330],{"type":46,"value":331},"Headings \u002F labels:",{"type":46,"value":214},{"type":40,"tag":55,"props":334,"children":336},{"className":335},[],[337],{"type":46,"value":338},"spec.headings",{"type":46,"value":340},", ",{"type":40,"tag":55,"props":342,"children":344},{"className":343},[],[345],{"type":46,"value":346},"spec.buttonLabels",{"type":46,"value":244},{"type":40,"tag":135,"props":349,"children":350},{},[351,356,357,363,365,371,372,378,380,386,388,393,394,399,401,407],{"type":40,"tag":83,"props":352,"children":353},{},[354],{"type":46,"value":355},"Body paragraphs \u002F list items:",{"type":46,"value":214},{"type":40,"tag":55,"props":358,"children":360},{"className":359},[],[361],{"type":46,"value":362},"spec.bodyText",{"type":46,"value":364}," (every captured ",{"type":40,"tag":55,"props":366,"children":368},{"className":367},[],[369],{"type":46,"value":370},"\u003Cp>",{"type":46,"value":105},{"type":40,"tag":55,"props":373,"children":375},{"className":374},[],[376],{"type":46,"value":377},"\u003Cli>",{"type":46,"value":379}," text node, verbatim — see ",{"type":40,"tag":55,"props":381,"children":383},{"className":382},[],[384],{"type":46,"value":385},"SectionSpec.bodyText",{"type":46,"value":387},"). If a template slot wants body copy that is ",{"type":40,"tag":83,"props":389,"children":390},{},[391],{"type":46,"value":392},"not",{"type":46,"value":237},{"type":40,"tag":55,"props":395,"children":397},{"className":396},[],[398],{"type":46,"value":362},{"type":46,"value":400},", do NOT write your own — re-read the section's captured ",{"type":40,"tag":55,"props":402,"children":404},{"className":403},[],[405],{"type":46,"value":406},"html\u002F\u003Cslug>.html",{"type":46,"value":408}," and pull the real line. If the source genuinely has no text for that slot, leave the slot out or use the missing-content placeholder; never fabricate.",{"type":40,"tag":135,"props":410,"children":411},{},[412,417,418,423,425,430],{"type":40,"tag":83,"props":413,"children":414},{},[415],{"type":46,"value":416},"Review\u002Ftestimonial quotes, authors, categories:",{"type":46,"value":214},{"type":40,"tag":55,"props":419,"children":421},{"className":420},[],[422],{"type":46,"value":196},{"type":46,"value":424}," → inline carousel HTML → embedded JSON → widget GET API (see ",{"type":40,"tag":55,"props":426,"children":428},{"className":427},[],[429],{"type":46,"value":173},{"type":46,"value":431},").",{"type":40,"tag":49,"props":433,"children":434},{},[435,437,442,444,450,451,457,458,464,466,472,474,479],{"type":46,"value":436},"Allowed differences from the raw source byte stream are ",{"type":40,"tag":83,"props":438,"children":439},{},[440],{"type":46,"value":441},"only",{"type":46,"value":443}," mechanical renderings: HTML-entity encoding (",{"type":40,"tag":55,"props":445,"children":447},{"className":446},[],[448],{"type":46,"value":449},"&#8217;",{"type":46,"value":340},{"type":40,"tag":55,"props":452,"children":454},{"className":453},[],[455],{"type":46,"value":456},"&nbsp;",{"type":46,"value":340},{"type":40,"tag":55,"props":459,"children":461},{"className":460},[],[462],{"type":46,"value":463},"&amp;",{"type":46,"value":465},"), whitespace collapse, and typographic-glyph folding (smart quotes ↔ straight, en\u002Fem dash ↔ hyphen, ellipsis char ↔ ",{"type":40,"tag":55,"props":467,"children":469},{"className":468},[],[470],{"type":46,"value":471},"...",{"type":46,"value":473},"). Anything beyond that — a different word, a reordered clause, a \"punchier\" rewrite — is paraphrase and is ",{"type":40,"tag":83,"props":475,"children":476},{},[477],{"type":46,"value":478},"rejected",{"type":46,"value":244},{"type":40,"tag":49,"props":481,"children":482},{},[483,485,491,493,499,501,520],{"type":46,"value":484},"This is enforced deterministically: ",{"type":40,"tag":55,"props":486,"children":488},{"className":487},[],[489],{"type":46,"value":490},"liberate_validate_artifacts",{"type":46,"value":492}," checks emitted text against the captured source. Headings must each be contained in a single ",{"type":40,"tag":55,"props":494,"children":496},{"className":495},[],[497],{"type":46,"value":498},"spec.expectedText",{"type":46,"value":500}," entry; ",{"type":40,"tag":83,"props":502,"children":503},{},[504,506,511,513,518],{"type":46,"value":505},"body paragraphs must be substantially contained in ",{"type":40,"tag":55,"props":507,"children":509},{"className":508},[],[510],{"type":46,"value":498},{"type":46,"value":512}," ∪ ",{"type":40,"tag":55,"props":514,"children":516},{"className":515},[],[517],{"type":46,"value":362},{"type":46,"value":519}," — a reworded paragraph HARD-FAILS the gate",{"type":46,"value":521}," (not a warning). You may not bypass that gate. An earlier getsnooz build paraphrased section body copy (\"Real fan-powered sound — no loops…\", \"Your best shut-eye, guaranteed.\") and invented three testimonials while the real lines sat in the captured HTML the whole time — exactly the failure this rule and gate exist to stop.",{"type":40,"tag":41,"props":523,"children":525},{"id":524},"missing-content-fallback-do-not-fabricate-substitutes-images-or-text",[526],{"type":46,"value":527},"Missing-content fallback (do NOT fabricate substitutes — images OR text)",{"type":40,"tag":49,"props":529,"children":530},{},[531,533,538,540,545,546,552,554,560,562,568,570,575],{"type":46,"value":532},"If a section spec references an image that could not be captured (cross-origin, 403\u002Fexpired CDN, rejected content-type), emit a ",{"type":40,"tag":83,"props":534,"children":535},{},[536],{"type":46,"value":537},"sized placeholder",{"type":46,"value":539}," that preserves the layout slot, ",{"type":40,"tag":83,"props":541,"children":542},{},[543],{"type":46,"value":544},"flag it",{"type":46,"value":237},{"type":40,"tag":55,"props":547,"children":549},{"className":548},[],[550],{"type":46,"value":551},"run-report.json",{"type":46,"value":553}," (",{"type":40,"tag":55,"props":555,"children":557},{"className":556},[],[558],{"type":46,"value":559},"details.provenanceFlags",{"type":46,"value":561}," + bump ",{"type":40,"tag":55,"props":563,"children":565},{"className":564},[],[566],{"type":46,"value":567},"summary.provenanceFlags",{"type":46,"value":569},"), and ",{"type":40,"tag":83,"props":571,"children":572},{},[573],{"type":46,"value":574},"never",{"type":46,"value":576}," substitute an unrelated image as if it were the source. A confident wrong image hides the extraction failure and produces a plausible-but-wrong replica — the exact mistake behind the first getsnooz build.",{"type":40,"tag":49,"props":578,"children":579},{},[580,582,587,589,594,596,602,604,610,612,617,619,624,625,630,632,637,639,644],{"type":46,"value":581},"The same rule governs ",{"type":40,"tag":83,"props":583,"children":584},{},[585],{"type":46,"value":586},"all text",{"type":46,"value":588}," (per the cardinal rule above), ",{"type":40,"tag":83,"props":590,"children":591},{},[592],{"type":46,"value":593},"most acutely review\u002Ftestimonial copy.",{"type":46,"value":595}," Never synthesize, paraphrase, or invent review quotes, author names, ratings, category labels, headings, or body paragraphs. They are source-captured verbatim or rendered as a clearly-marked placeholder (",{"type":40,"tag":55,"props":597,"children":599},{"className":598},[],[600],{"type":46,"value":601},"[review text not captured]",{"type":46,"value":603},", or for body copy ",{"type":40,"tag":55,"props":605,"children":607},{"className":606},[],[608],{"type":46,"value":609},"[copy not captured]",{"type":46,"value":611},") plus a run-report flag — never fabricated, and never bypass the ",{"type":40,"tag":55,"props":613,"children":615},{"className":614},[],[616],{"type":46,"value":490},{"type":46,"value":618}," provenance gate (text ⊆ captured source). An earlier getsnooz build invented three testimonials AND paraphrased section body copy, and manually skipped that gate; the real text was in the captured HTML the entire time. See ",{"type":40,"tag":231,"props":620,"children":621},{},[622],{"type":46,"value":623},"Missing-media fallback",{"type":46,"value":340},{"type":40,"tag":231,"props":626,"children":627},{},[628],{"type":46,"value":629},"Missing-content fallback (review\u002Ftestimonial text)",{"type":46,"value":631},", and the ",{"type":40,"tag":55,"props":633,"children":635},{"className":634},[],[636],{"type":46,"value":173},{"type":46,"value":638}," sourcing order in ",{"type":40,"tag":55,"props":640,"children":642},{"className":641},[],[643],{"type":46,"value":127},{"type":46,"value":244},{"type":40,"tag":41,"props":646,"children":648},{"id":647},"pattern-generation-rules",[649],{"type":46,"value":650},"Pattern Generation Rules",{"type":40,"tag":131,"props":652,"children":653},{},[654,667,672,692,697,740,745],{"type":40,"tag":135,"props":655,"children":656},{},[657,659,665],{"type":46,"value":658},"Place pattern files in the ",{"type":40,"tag":55,"props":660,"children":662},{"className":661},[],[663],{"type":46,"value":664},"patterns\u002F",{"type":46,"value":666}," directory",{"type":40,"tag":135,"props":668,"children":669},{},[670],{"type":46,"value":671},"Each pattern file must start with a PHP comment header registering the pattern",{"type":40,"tag":135,"props":673,"children":674},{},[675,677,683,684,690],{"type":46,"value":676},"Use descriptive, kebab-case filenames (e.g., ",{"type":40,"tag":55,"props":678,"children":680},{"className":679},[],[681],{"type":46,"value":682},"hero-split.php",{"type":46,"value":340},{"type":40,"tag":55,"props":685,"children":687},{"className":686},[],[688],{"type":46,"value":689},"faq-accordion.php",{"type":46,"value":691},")",{"type":40,"tag":135,"props":693,"children":694},{},[695],{"type":46,"value":696},"Never use emojis in any pattern content",{"type":40,"tag":135,"props":698,"children":699},{},[700,705,707,712,714,719,721,726,727,732,733,738],{"type":40,"tag":83,"props":701,"children":702},{},[703],{"type":46,"value":704},"Copy is source-verbatim, never invented",{"type":46,"value":706}," (see the Cardinal rule above). This overrides any \"write realistic placeholder copy\" habit from generic landing-page generation: for a ",{"type":40,"tag":231,"props":708,"children":709},{},[710],{"type":46,"value":711},"replica",{"type":46,"value":713},", the copy IS the source's copy, reproduced verbatim from ",{"type":40,"tag":55,"props":715,"children":717},{"className":716},[],[718],{"type":46,"value":338},{"type":46,"value":720}," \u002F ",{"type":40,"tag":55,"props":722,"children":724},{"className":723},[],[725],{"type":46,"value":362},{"type":46,"value":720},{"type":40,"tag":55,"props":728,"children":730},{"className":729},[],[731],{"type":46,"value":346},{"type":46,"value":720},{"type":40,"tag":55,"props":734,"children":736},{"className":735},[],[737],{"type":46,"value":196},{"type":46,"value":739}," (or placeholdered + flagged). Do not write your own headlines, body, or CTAs.",{"type":40,"tag":135,"props":741,"children":742},{},[743],{"type":46,"value":744},"Alternate between light and dark section backgrounds to create visual rhythm",{"type":40,"tag":135,"props":746,"children":747},{},[748,750,756],{"type":46,"value":749},"Patterns must be self-contained — do not use ",{"type":40,"tag":55,"props":751,"children":753},{"className":752},[],[754],{"type":46,"value":755},"\u003Cinner-blocks>",{"type":46,"value":757}," or assume external context",{"type":40,"tag":41,"props":759,"children":761},{"id":760},"pattern-file-header-required",[762],{"type":46,"value":763},"Pattern File Header (required)",{"type":40,"tag":49,"props":765,"children":766},{},[767],{"type":46,"value":768},"Every pattern file must begin with this PHP comment block:",{"type":40,"tag":770,"props":771,"children":776},"pre",{"className":772,"code":773,"language":774,"meta":775,"style":775},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\u002F**\n * Title: Hero Split\n * Slug: theme-slug\u002Fhero-split\n * Categories: featured, banner\n * Keywords: hero, split, cta\n * Block Types: core\u002Ftemplate-part\u002Fcontent\n *\u002F\n?>\n","php","",[777],{"type":40,"tag":55,"props":778,"children":779},{"__ignoreMap":775},[780,790,799,808,817,826,835,844,853],{"type":40,"tag":781,"props":782,"children":784},"span",{"class":783,"line":26},"line",[785],{"type":40,"tag":781,"props":786,"children":787},{},[788],{"type":46,"value":789},"\u003C?php\n",{"type":40,"tag":781,"props":791,"children":793},{"class":783,"line":792},2,[794],{"type":40,"tag":781,"props":795,"children":796},{},[797],{"type":46,"value":798},"\u002F**\n",{"type":40,"tag":781,"props":800,"children":802},{"class":783,"line":801},3,[803],{"type":40,"tag":781,"props":804,"children":805},{},[806],{"type":46,"value":807}," * Title: Hero Split\n",{"type":40,"tag":781,"props":809,"children":811},{"class":783,"line":810},4,[812],{"type":40,"tag":781,"props":813,"children":814},{},[815],{"type":46,"value":816}," * Slug: theme-slug\u002Fhero-split\n",{"type":40,"tag":781,"props":818,"children":820},{"class":783,"line":819},5,[821],{"type":40,"tag":781,"props":822,"children":823},{},[824],{"type":46,"value":825}," * Categories: featured, banner\n",{"type":40,"tag":781,"props":827,"children":829},{"class":783,"line":828},6,[830],{"type":40,"tag":781,"props":831,"children":832},{},[833],{"type":46,"value":834}," * Keywords: hero, split, cta\n",{"type":40,"tag":781,"props":836,"children":838},{"class":783,"line":837},7,[839],{"type":40,"tag":781,"props":840,"children":841},{},[842],{"type":46,"value":843}," * Block Types: core\u002Ftemplate-part\u002Fcontent\n",{"type":40,"tag":781,"props":845,"children":847},{"class":783,"line":846},8,[848],{"type":40,"tag":781,"props":849,"children":850},{},[851],{"type":46,"value":852}," *\u002F\n",{"type":40,"tag":781,"props":854,"children":856},{"class":783,"line":855},9,[857],{"type":40,"tag":781,"props":858,"children":859},{},[860],{"type":46,"value":861},"?>\n",{"type":40,"tag":131,"props":863,"children":864},{},[865,876,895,982,993],{"type":40,"tag":135,"props":866,"children":867},{},[868,874],{"type":40,"tag":55,"props":869,"children":871},{"className":870},[],[872],{"type":46,"value":873},"Title",{"type":46,"value":875},": Human-readable name shown in the inserter",{"type":40,"tag":135,"props":877,"children":878},{},[879,885,887,893],{"type":40,"tag":55,"props":880,"children":882},{"className":881},[],[883],{"type":46,"value":884},"Slug",{"type":46,"value":886},": Must be ",{"type":40,"tag":55,"props":888,"children":890},{"className":889},[],[891],{"type":46,"value":892},"theme-slug\u002Fpattern-name",{"type":46,"value":894}," using the theme's text domain",{"type":40,"tag":135,"props":896,"children":897},{},[898,904,906,912,913,919,920,925,926,932,933,939,940,946,947,953,954,960,961,967,968,974,975,981],{"type":40,"tag":55,"props":899,"children":901},{"className":900},[],[902],{"type":46,"value":903},"Categories",{"type":46,"value":905},": Comma-separated list (use WordPress defaults: ",{"type":40,"tag":55,"props":907,"children":909},{"className":908},[],[910],{"type":46,"value":911},"featured",{"type":46,"value":340},{"type":40,"tag":55,"props":914,"children":916},{"className":915},[],[917],{"type":46,"value":918},"banner",{"type":46,"value":340},{"type":40,"tag":55,"props":921,"children":923},{"className":922},[],[924],{"type":46,"value":46},{"type":46,"value":340},{"type":40,"tag":55,"props":927,"children":929},{"className":928},[],[930],{"type":46,"value":931},"gallery",{"type":46,"value":340},{"type":40,"tag":55,"props":934,"children":936},{"className":935},[],[937],{"type":46,"value":938},"call-to-action",{"type":46,"value":340},{"type":40,"tag":55,"props":941,"children":943},{"className":942},[],[944],{"type":46,"value":945},"about",{"type":46,"value":340},{"type":40,"tag":55,"props":948,"children":950},{"className":949},[],[951],{"type":46,"value":952},"team",{"type":46,"value":340},{"type":40,"tag":55,"props":955,"children":957},{"className":956},[],[958],{"type":46,"value":959},"testimonials",{"type":46,"value":340},{"type":40,"tag":55,"props":962,"children":964},{"className":963},[],[965],{"type":46,"value":966},"contact",{"type":46,"value":340},{"type":40,"tag":55,"props":969,"children":971},{"className":970},[],[972],{"type":46,"value":973},"footer",{"type":46,"value":340},{"type":40,"tag":55,"props":976,"children":978},{"className":977},[],[979],{"type":46,"value":980},"header",{"type":46,"value":691},{"type":40,"tag":135,"props":983,"children":984},{},[985,991],{"type":40,"tag":55,"props":986,"children":988},{"className":987},[],[989],{"type":46,"value":990},"Keywords",{"type":46,"value":992},": Comma-separated search terms for discoverability",{"type":40,"tag":135,"props":994,"children":995},{},[996,1002],{"type":40,"tag":55,"props":997,"children":999},{"className":998},[],[1000],{"type":46,"value":1001},"Block Types",{"type":46,"value":1003},": Optional — restricts where the pattern appears",{"type":40,"tag":41,"props":1005,"children":1007},{"id":1006},"pattern-set-for-landing-pages",[1008],{"type":46,"value":1009},"Pattern Set for Landing Pages",{"type":40,"tag":49,"props":1011,"children":1012},{},[1013],{"type":46,"value":1014},"When generating patterns for a landing page theme, include a varied set that covers the full page flow. Choose patterns that match the site type and audience — not every site needs the same set.",{"type":40,"tag":49,"props":1016,"children":1017},{},[1018],{"type":46,"value":1019},"Recommended baseline (adapt per site type):",{"type":40,"tag":1021,"props":1022,"children":1023},"ol",{},[1024,1034,1044,1054,1064,1074,1084],{"type":40,"tag":135,"props":1025,"children":1026},{},[1027,1032],{"type":40,"tag":83,"props":1028,"children":1029},{},[1030],{"type":46,"value":1031},"Hero section",{"type":46,"value":1033}," — the first thing visitors see; must set the tone and include a primary CTA",{"type":40,"tag":135,"props":1035,"children":1036},{},[1037,1042],{"type":40,"tag":83,"props":1038,"children":1039},{},[1040],{"type":46,"value":1041},"Social proof \u002F logos",{"type":46,"value":1043}," — build trust early with client logos or partner badges",{"type":40,"tag":135,"props":1045,"children":1046},{},[1047,1052],{"type":40,"tag":83,"props":1048,"children":1049},{},[1050],{"type":46,"value":1051},"Feature grid",{"type":46,"value":1053}," — highlight key offerings or services",{"type":40,"tag":135,"props":1055,"children":1056},{},[1057,1062],{"type":40,"tag":83,"props":1058,"children":1059},{},[1060],{"type":46,"value":1061},"Content with media",{"type":46,"value":1063}," — pair text with imagery to explain the value proposition",{"type":40,"tag":135,"props":1065,"children":1066},{},[1067,1072],{"type":40,"tag":83,"props":1068,"children":1069},{},[1070],{"type":46,"value":1071},"Testimonials or case studies",{"type":46,"value":1073}," — reinforce credibility",{"type":40,"tag":135,"props":1075,"children":1076},{},[1077,1082],{"type":40,"tag":83,"props":1078,"children":1079},{},[1080],{"type":46,"value":1081},"FAQ",{"type":46,"value":1083}," — address common objections",{"type":40,"tag":135,"props":1085,"children":1086},{},[1087,1092],{"type":40,"tag":83,"props":1088,"children":1089},{},[1090],{"type":46,"value":1091},"Final CTA",{"type":46,"value":1093}," — closing section with a clear conversion action",{"type":40,"tag":41,"props":1095,"children":1097},{"id":1096},"header-patterns-replica-source-logo-nav-never-page-list",[1098],{"type":46,"value":1099},"Header patterns (replica): source logo + nav, NEVER page-list",{"type":40,"tag":49,"props":1101,"children":1102},{},[1103],{"type":46,"value":1104},"If a pattern reconstructs the site header (or a header part), it MUST mirror the SOURCE header:",{"type":40,"tag":131,"props":1106,"children":1107},{},[1108,1142,1170,1175,1187],{"type":40,"tag":135,"props":1109,"children":1110},{},[1111,1113,1118,1119,1125,1126,1132,1134,1140],{"type":46,"value":1112},"Use the source's real ",{"type":40,"tag":83,"props":1114,"children":1115},{},[1116],{"type":46,"value":1117},"logo image",{"type":46,"value":553},{"type":40,"tag":55,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":46,"value":1124},"core\u002Fimage",{"type":46,"value":720},{"type":40,"tag":55,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":46,"value":1131},"core\u002Fsite-logo",{"type":46,"value":1133},"), not ",{"type":40,"tag":55,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":46,"value":1139},"core\u002Fsite-title",{"type":46,"value":1141}," text and not a product image.",{"type":40,"tag":135,"props":1143,"children":1144},{},[1145,1147,1153,1155,1160,1162,1168],{"type":46,"value":1146},"Use explicit ",{"type":40,"tag":55,"props":1148,"children":1150},{"className":1149},[],[1151],{"type":46,"value":1152},"core\u002Fnavigation-link",{"type":46,"value":1154},"s for the source's ",{"type":40,"tag":83,"props":1156,"children":1157},{},[1158],{"type":46,"value":1159},"top-level primary menu only",{"type":46,"value":1161}," (label + href). NEVER use ",{"type":40,"tag":55,"props":1163,"children":1165},{"className":1164},[],[1166],{"type":46,"value":1167},"core\u002Fpage-list",{"type":46,"value":1169}," — it dumps every published WP page (Sample Page, Checkout, account, recall pages) as junk that does not reflect the source's menu.",{"type":40,"tag":135,"props":1171,"children":1172},{},[1173],{"type":46,"value":1174},"Drop mega-menu sub-links, the mobile-drawer duplicate, and social\u002Faccount\u002Fcart\u002Fsearch affordances.",{"type":40,"tag":135,"props":1176,"children":1177},{},[1178,1180,1185],{"type":46,"value":1179},"Preserve the source's top ",{"type":40,"tag":83,"props":1181,"children":1182},{},[1183],{"type":46,"value":1184},"announcement\u002Futility bar",{"type":46,"value":1186}," when present.",{"type":40,"tag":135,"props":1188,"children":1189},{},[1190,1192,1197,1199,1205,1207,1213,1214,1220],{"type":46,"value":1191},"Apply the site's ",{"type":40,"tag":83,"props":1193,"children":1194},{},[1195],{"type":46,"value":1196},"self-hosted source fonts",{"type":46,"value":1198}," (e.g. the heading typeface), not a system fallback — see the scaffold's font-capture (",{"type":40,"tag":55,"props":1200,"children":1202},{"className":1201},[],[1203],{"type":46,"value":1204},"@font-face",{"type":46,"value":1206}," → ",{"type":40,"tag":55,"props":1208,"children":1210},{"className":1209},[],[1211],{"type":46,"value":1212},"assets\u002Ffonts\u002F",{"type":46,"value":1206},{"type":40,"tag":55,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":46,"value":1219},"theme.json",{"type":46,"value":1221}," fontFamilies).",{"type":40,"tag":41,"props":1223,"children":1225},{"id":1224},"cta-guidelines",[1226],{"type":46,"value":1227},"CTA Guidelines",{"type":40,"tag":131,"props":1229,"children":1230},{},[1231,1236,1249,1254,1259],{"type":40,"tag":135,"props":1232,"children":1233},{},[1234],{"type":46,"value":1235},"Every landing page must have at least two CTA patterns: one in the hero, one as a closing section",{"type":40,"tag":135,"props":1237,"children":1238},{},[1239,1241,1247],{"type":46,"value":1240},"Use ",{"type":40,"tag":55,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":46,"value":1246},"wp:buttons",{"type":46,"value":1248}," with clear, action-oriented text (\"Get Started\", \"Book a Demo\", \"View Portfolio\")",{"type":40,"tag":135,"props":1250,"children":1251},{},[1252],{"type":46,"value":1253},"Style CTAs to stand out — use the theme's accent color, generous padding, and prominent placement",{"type":40,"tag":135,"props":1255,"children":1256},{},[1257],{"type":46,"value":1258},"Avoid vague labels like \"Click Here\" or \"Learn More\" when a specific action is available",{"type":40,"tag":135,"props":1260,"children":1261},{},[1262],{"type":46,"value":1263},"For sticky CTAs, use a full-width Group with a fixed position class and high z-index",{"type":40,"tag":41,"props":1265,"children":1267},{"id":1266},"layout-examples",[1268],{"type":46,"value":1269},"Layout Examples",{"type":40,"tag":1271,"props":1272,"children":1274},"h3",{"id":1273},"hero-with-left-text-right-image",[1275],{"type":46,"value":1276},"Hero with left text \u002F right image",{"type":40,"tag":49,"props":1278,"children":1279},{},[1280,1282,1288,1290,1296],{"type":46,"value":1281},"Two-column split: heading + paragraph + CTA button on the left, full-height image on the right. Use ",{"type":40,"tag":55,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":46,"value":1287},"wp:columns",{"type":46,"value":1289}," with a 55\u002F45 or 60\u002F40 split. The text column gets vertical centering; the image column uses ",{"type":40,"tag":55,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":46,"value":1295},"object-fit: cover",{"type":46,"value":1297}," at full height.",{"type":40,"tag":770,"props":1299,"children":1303},{"className":1300,"code":1302,"language":46},[1301],"language-text","Columns (align: full)\n  └── Column (width: 55%, verticalAlignment: center)\n  │     └── Heading (h1)\n  │     └── Paragraph\n  │     └── Buttons\n  └── Column (width: 45%)\n        └── Image (style: height 100%, object-fit: cover)\n",[1304],{"type":40,"tag":55,"props":1305,"children":1306},{"__ignoreMap":775},[1307],{"type":46,"value":1302},{"type":40,"tag":1271,"props":1309,"children":1311},{"id":1310},"z-pattern-layout",[1312],{"type":46,"value":1313},"Z-pattern layout",{"type":40,"tag":49,"props":1315,"children":1316},{},[1317],{"type":46,"value":1318},"Alternate the position of text and image across consecutive sections to create a natural Z reading flow. Odd sections place text left \u002F image right; even sections flip to image left \u002F text right.",{"type":40,"tag":770,"props":1320,"children":1323},{"className":1321,"code":1322,"language":46},[1301],"Section 1 — Columns (align: wide)\n  └── Column (text) | Column (image)\n\nSection 2 — Columns (align: wide)\n  └── Column (image) | Column (text)\n\nSection 3 — Columns (align: wide)\n  └── Column (text) | Column (image)\n",[1324],{"type":40,"tag":55,"props":1325,"children":1326},{"__ignoreMap":775},[1327],{"type":46,"value":1322},{"type":40,"tag":49,"props":1329,"children":1330},{},[1331],{"type":46,"value":1332},"Use alternating background colors (light\u002Fdark) between sections to reinforce separation.",{"type":40,"tag":1271,"props":1334,"children":1336},{"id":1335},"_3-column-feature-grid",[1337],{"type":46,"value":1338},"3-column feature grid",{"type":40,"tag":49,"props":1340,"children":1341},{},[1342,1344,1350],{"type":46,"value":1343},"Three equal-width columns, each containing an icon or image, a heading, a paragraph, and an optional CTA. Use the ",{"type":40,"tag":55,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":46,"value":1349},"equal-cards",{"type":46,"value":1351}," pattern from the card-layouts reference.",{"type":40,"tag":770,"props":1353,"children":1356},{"className":1354,"code":1355,"language":46},[1301],"Columns (className: \"equal-cards\", align: wide)\n  └── Column (width: 33.33%, verticalAlignment: stretch)\n  │     └── Group\n  │           └── Image (icon or illustration)\n  │           └── Heading (h3)\n  │           └── Paragraph\n  │           └── Buttons (className: \"cta-bottom\") [optional]\n  └── Column (width: 33.33%, verticalAlignment: stretch)\n  │     └── Group\n  │           └── ...\n  └── Column (width: 33.33%, verticalAlignment: stretch)\n        └── Group\n              └── ...\n",[1357],{"type":40,"tag":55,"props":1358,"children":1359},{"__ignoreMap":775},[1360],{"type":46,"value":1355},{"type":40,"tag":1271,"props":1362,"children":1364},{"id":1363},"alternating-lightdark-sections",[1365],{"type":46,"value":1366},"Alternating light\u002Fdark sections",{"type":40,"tag":49,"props":1368,"children":1369},{},[1370,1372,1378,1380,1386,1388,1394],{"type":46,"value":1371},"Wrap each section in a ",{"type":40,"tag":55,"props":1373,"children":1375},{"className":1374},[],[1376],{"type":46,"value":1377},"wp:group",{"type":46,"value":1379}," with a contrasting background color. Pull colors from the theme palette — use ",{"type":40,"tag":55,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":46,"value":1385},"has-{color}-background-color",{"type":46,"value":1387}," classes or inline ",{"type":40,"tag":55,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":46,"value":1393},"backgroundColor",{"type":46,"value":1395}," attributes. Alternate between the theme's base and contrast colors.",{"type":40,"tag":770,"props":1397,"children":1400},{"className":1398,"code":1399,"language":46},[1301],"Group (align: full, backgroundColor: base)\n  └── [section content]\n\nGroup (align: full, backgroundColor: contrast)\n  └── [section content with inverted text color]\n\nGroup (align: full, backgroundColor: base)\n  └── [section content]\n",[1401],{"type":40,"tag":55,"props":1402,"children":1403},{"__ignoreMap":775},[1404],{"type":46,"value":1399},{"type":40,"tag":1271,"props":1406,"children":1408},{"id":1407},"sticky-cta-button",[1409],{"type":46,"value":1410},"Sticky CTA button",{"type":40,"tag":49,"props":1412,"children":1413},{},[1414],{"type":46,"value":1415},"A fixed-position bar at the bottom of the viewport with a single CTA. Use a full-width Group with custom CSS class for sticky positioning.",{"type":40,"tag":770,"props":1417,"children":1420},{"className":1418,"code":1419,"language":46},[1301],"Group (align: full, className: \"sticky-cta\")\n  └── Buttons (layout: center)\n        └── Button (\"Get Started Now\")\n",[1421],{"type":40,"tag":55,"props":1422,"children":1423},{"__ignoreMap":775},[1424],{"type":46,"value":1419},{"type":40,"tag":49,"props":1426,"children":1427},{},[1428],{"type":46,"value":1429},"Required CSS (style.css):",{"type":40,"tag":770,"props":1431,"children":1435},{"className":1432,"code":1433,"language":1434,"meta":775,"style":775},"language-css shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",".sticky-cta {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  z-index: 50;\n  padding: 1rem;\n}\n","css",[1436],{"type":40,"tag":55,"props":1437,"children":1438},{"__ignoreMap":775},[1439,1458,1482,1504,1524,1544,1565,1586],{"type":40,"tag":781,"props":1440,"children":1441},{"class":783,"line":26},[1442,1447,1453],{"type":40,"tag":781,"props":1443,"children":1445},{"style":1444},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1446],{"type":46,"value":244},{"type":40,"tag":781,"props":1448,"children":1450},{"style":1449},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1451],{"type":46,"value":1452},"sticky-cta",{"type":40,"tag":781,"props":1454,"children":1455},{"style":1444},[1456],{"type":46,"value":1457}," {\n",{"type":40,"tag":781,"props":1459,"children":1460},{"class":783,"line":792},[1461,1467,1471,1477],{"type":40,"tag":781,"props":1462,"children":1464},{"style":1463},"--shiki-light:#8796B0;--shiki-default:#B2CCD6;--shiki-dark:#B2CCD6",[1465],{"type":46,"value":1466},"  position",{"type":40,"tag":781,"props":1468,"children":1469},{"style":1444},[1470],{"type":46,"value":129},{"type":40,"tag":781,"props":1472,"children":1474},{"style":1473},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1475],{"type":46,"value":1476}," fixed",{"type":40,"tag":781,"props":1478,"children":1479},{"style":1444},[1480],{"type":46,"value":1481},";\n",{"type":40,"tag":781,"props":1483,"children":1484},{"class":783,"line":801},[1485,1490,1494,1500],{"type":40,"tag":781,"props":1486,"children":1487},{"style":1463},[1488],{"type":46,"value":1489},"  bottom",{"type":40,"tag":781,"props":1491,"children":1492},{"style":1444},[1493],{"type":46,"value":129},{"type":40,"tag":781,"props":1495,"children":1497},{"style":1496},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1498],{"type":46,"value":1499}," 0",{"type":40,"tag":781,"props":1501,"children":1502},{"style":1444},[1503],{"type":46,"value":1481},{"type":40,"tag":781,"props":1505,"children":1506},{"class":783,"line":810},[1507,1512,1516,1520],{"type":40,"tag":781,"props":1508,"children":1509},{"style":1463},[1510],{"type":46,"value":1511},"  left",{"type":40,"tag":781,"props":1513,"children":1514},{"style":1444},[1515],{"type":46,"value":129},{"type":40,"tag":781,"props":1517,"children":1518},{"style":1496},[1519],{"type":46,"value":1499},{"type":40,"tag":781,"props":1521,"children":1522},{"style":1444},[1523],{"type":46,"value":1481},{"type":40,"tag":781,"props":1525,"children":1526},{"class":783,"line":819},[1527,1532,1536,1540],{"type":40,"tag":781,"props":1528,"children":1529},{"style":1463},[1530],{"type":46,"value":1531},"  right",{"type":40,"tag":781,"props":1533,"children":1534},{"style":1444},[1535],{"type":46,"value":129},{"type":40,"tag":781,"props":1537,"children":1538},{"style":1496},[1539],{"type":46,"value":1499},{"type":40,"tag":781,"props":1541,"children":1542},{"style":1444},[1543],{"type":46,"value":1481},{"type":40,"tag":781,"props":1545,"children":1546},{"class":783,"line":828},[1547,1552,1556,1561],{"type":40,"tag":781,"props":1548,"children":1549},{"style":1463},[1550],{"type":46,"value":1551},"  z-index",{"type":40,"tag":781,"props":1553,"children":1554},{"style":1444},[1555],{"type":46,"value":129},{"type":40,"tag":781,"props":1557,"children":1558},{"style":1496},[1559],{"type":46,"value":1560}," 50",{"type":40,"tag":781,"props":1562,"children":1563},{"style":1444},[1564],{"type":46,"value":1481},{"type":40,"tag":781,"props":1566,"children":1567},{"class":783,"line":837},[1568,1573,1577,1582],{"type":40,"tag":781,"props":1569,"children":1570},{"style":1463},[1571],{"type":46,"value":1572},"  padding",{"type":40,"tag":781,"props":1574,"children":1575},{"style":1444},[1576],{"type":46,"value":129},{"type":40,"tag":781,"props":1578,"children":1579},{"style":1496},[1580],{"type":46,"value":1581}," 1rem",{"type":40,"tag":781,"props":1583,"children":1584},{"style":1444},[1585],{"type":46,"value":1481},{"type":40,"tag":781,"props":1587,"children":1588},{"class":783,"line":846},[1589],{"type":40,"tag":781,"props":1590,"children":1591},{"style":1444},[1592],{"type":46,"value":1593},"}\n",{"type":40,"tag":1271,"props":1595,"children":1597},{"id":1596},"accordion-faq",[1598],{"type":46,"value":1599},"Accordion FAQ",{"type":40,"tag":49,"props":1601,"children":1602},{},[1603,1605,1611],{"type":46,"value":1604},"Use the ",{"type":40,"tag":55,"props":1606,"children":1608},{"className":1607},[],[1609],{"type":46,"value":1610},"wp:details",{"type":46,"value":1612}," block for collapsible FAQ items inside a constrained-width Group.",{"type":40,"tag":770,"props":1614,"children":1617},{"className":1615,"code":1616,"language":46},[1301],"Group (align: wide, layout: constrained)\n  └── Heading (h2, \"Frequently Asked Questions\")\n  └── Details (summary: \"Question one?\")\n  │     └── Paragraph (answer)\n  └── Details (summary: \"Question two?\")\n  │     └── Paragraph (answer)\n  └── Details (summary: \"Question three?\")\n        └── Paragraph (answer)\n",[1618],{"type":40,"tag":55,"props":1619,"children":1620},{"__ignoreMap":775},[1621],{"type":46,"value":1616},{"type":40,"tag":1271,"props":1623,"children":1625},{"id":1624},"logos-as-social-proof",[1626],{"type":46,"value":1627},"Logos as social proof",{"type":40,"tag":49,"props":1629,"children":1630},{},[1631,1633,1638],{"type":46,"value":1632},"A single row of client or partner logos. Use a ",{"type":40,"tag":55,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":46,"value":1287},{"type":46,"value":1639}," block with evenly spaced columns, each containing a centered image. Keep logos grayscale or muted to avoid visual clutter.",{"type":40,"tag":770,"props":1641,"children":1644},{"className":1642,"code":1643,"language":46},[1301],"Group (align: wide)\n  └── Paragraph (align: center, \"Trusted by leading companies\")\n  └── Columns (align: wide)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n        └── Column (width: 16.66%) → Image (logo, centered)\n",[1645],{"type":40,"tag":55,"props":1646,"children":1647},{"__ignoreMap":775},[1648],{"type":46,"value":1643},{"type":40,"tag":41,"props":1650,"children":1652},{"id":1651},"site-type-pattern-suggestions",[1653],{"type":46,"value":1654},"Site-Type Pattern Suggestions",{"type":40,"tag":49,"props":1656,"children":1657},{},[1658],{"type":46,"value":1659},"Not every site needs the same patterns. Adapt the set to the context:",{"type":40,"tag":131,"props":1661,"children":1662},{},[1663,1673,1683,1693,1703,1713],{"type":40,"tag":135,"props":1664,"children":1665},{},[1666,1671],{"type":40,"tag":83,"props":1667,"children":1668},{},[1669],{"type":46,"value":1670},"Portfolio",{"type":46,"value":1672},": Hero with full-bleed image, project gallery grid, about\u002Fbio section, contact CTA",{"type":40,"tag":135,"props":1674,"children":1675},{},[1676,1681],{"type":40,"tag":83,"props":1677,"children":1678},{},[1679],{"type":46,"value":1680},"SaaS \u002F Product",{"type":46,"value":1682},": Hero split, logo bar, feature grid, pricing table, testimonials, FAQ, final CTA",{"type":40,"tag":135,"props":1684,"children":1685},{},[1686,1691],{"type":40,"tag":83,"props":1687,"children":1688},{},[1689],{"type":46,"value":1690},"Restaurant \u002F Local",{"type":46,"value":1692},": Hero with cover image, menu highlights, hours\u002Flocation, reservation CTA, gallery",{"type":40,"tag":135,"props":1694,"children":1695},{},[1696,1701],{"type":40,"tag":83,"props":1697,"children":1698},{},[1699],{"type":46,"value":1700},"Agency \u002F Studio",{"type":46,"value":1702},": Hero with reel or case study, services grid, case study cards, team, contact",{"type":40,"tag":135,"props":1704,"children":1705},{},[1706,1711],{"type":40,"tag":83,"props":1707,"children":1708},{},[1709],{"type":46,"value":1710},"Blog \u002F Magazine",{"type":46,"value":1712},": Hero with featured post, category grid, newsletter signup, recent posts",{"type":40,"tag":135,"props":1714,"children":1715},{},[1716,1721],{"type":40,"tag":83,"props":1717,"children":1718},{},[1719],{"type":46,"value":1720},"E-commerce",{"type":46,"value":1722},": Hero with product showcase, category grid, bestsellers, testimonials, promo banner",{"type":40,"tag":41,"props":1724,"children":1726},{"id":1725},"return-envelope-orchestrator-internal",[1727],{"type":46,"value":1728},"Return envelope (orchestrator-internal)",{"type":40,"tag":49,"props":1730,"children":1731},{},[1732,1734,1740,1741,1747],{"type":46,"value":1733},"When invoked as a builder subagent by the ",{"type":40,"tag":55,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":46,"value":1739},"\u002Fliberate",{"type":46,"value":62},{"type":40,"tag":55,"props":1742,"children":1744},{"className":1743},[],[1745],{"type":46,"value":1746},"\u002Freplicate-with-blocks",{"type":46,"value":1748}," orchestrator, you MUST return your output as a structured JSON envelope — not free-form prose:",{"type":40,"tag":770,"props":1750,"children":1754},{"className":1751,"code":1752,"language":1753,"meta":775,"style":775},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"patterns\": [\n    { \"slug\": \"theme-slug\u002Fhero-split\", \"php\": \"\u003C?php\\n\u002F**\\n * Title: Hero Split\\n * ...\\n *\u002F\\n?>\\n\u003C!-- wp:group ... -->\" }\n  ],\n  \"sitewideFlags\": [],\n  \"notes\": []\n}\n","json",[1755],{"type":40,"tag":55,"props":1756,"children":1757},{"__ignoreMap":775},[1758,1766,1794,1928,1936,1961,1986],{"type":40,"tag":781,"props":1759,"children":1760},{"class":783,"line":26},[1761],{"type":40,"tag":781,"props":1762,"children":1763},{"style":1444},[1764],{"type":46,"value":1765},"{\n",{"type":40,"tag":781,"props":1767,"children":1768},{"class":783,"line":792},[1769,1774,1780,1785,1789],{"type":40,"tag":781,"props":1770,"children":1771},{"style":1444},[1772],{"type":46,"value":1773},"  \"",{"type":40,"tag":781,"props":1775,"children":1777},{"style":1776},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1778],{"type":46,"value":1779},"patterns",{"type":40,"tag":781,"props":1781,"children":1782},{"style":1444},[1783],{"type":46,"value":1784},"\"",{"type":40,"tag":781,"props":1786,"children":1787},{"style":1444},[1788],{"type":46,"value":129},{"type":40,"tag":781,"props":1790,"children":1791},{"style":1444},[1792],{"type":46,"value":1793}," [\n",{"type":40,"tag":781,"props":1795,"children":1796},{"class":783,"line":801},[1797,1802,1807,1812,1816,1820,1824,1830,1834,1839,1843,1847,1851,1855,1859,1864,1869,1874,1878,1883,1887,1892,1896,1901,1905,1910,1914,1919,1923],{"type":40,"tag":781,"props":1798,"children":1799},{"style":1444},[1800],{"type":46,"value":1801},"    {",{"type":40,"tag":781,"props":1803,"children":1804},{"style":1444},[1805],{"type":46,"value":1806}," \"",{"type":40,"tag":781,"props":1808,"children":1809},{"style":1449},[1810],{"type":46,"value":1811},"slug",{"type":40,"tag":781,"props":1813,"children":1814},{"style":1444},[1815],{"type":46,"value":1784},{"type":40,"tag":781,"props":1817,"children":1818},{"style":1444},[1819],{"type":46,"value":129},{"type":40,"tag":781,"props":1821,"children":1822},{"style":1444},[1823],{"type":46,"value":1806},{"type":40,"tag":781,"props":1825,"children":1827},{"style":1826},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1828],{"type":46,"value":1829},"theme-slug\u002Fhero-split",{"type":40,"tag":781,"props":1831,"children":1832},{"style":1444},[1833],{"type":46,"value":1784},{"type":40,"tag":781,"props":1835,"children":1836},{"style":1444},[1837],{"type":46,"value":1838},",",{"type":40,"tag":781,"props":1840,"children":1841},{"style":1444},[1842],{"type":46,"value":1806},{"type":40,"tag":781,"props":1844,"children":1845},{"style":1449},[1846],{"type":46,"value":774},{"type":40,"tag":781,"props":1848,"children":1849},{"style":1444},[1850],{"type":46,"value":1784},{"type":40,"tag":781,"props":1852,"children":1853},{"style":1444},[1854],{"type":46,"value":129},{"type":40,"tag":781,"props":1856,"children":1857},{"style":1444},[1858],{"type":46,"value":1806},{"type":40,"tag":781,"props":1860,"children":1861},{"style":1826},[1862],{"type":46,"value":1863},"\u003C?php",{"type":40,"tag":781,"props":1865,"children":1866},{"style":1473},[1867],{"type":46,"value":1868},"\\n",{"type":40,"tag":781,"props":1870,"children":1871},{"style":1826},[1872],{"type":46,"value":1873},"\u002F**",{"type":40,"tag":781,"props":1875,"children":1876},{"style":1473},[1877],{"type":46,"value":1868},{"type":40,"tag":781,"props":1879,"children":1880},{"style":1826},[1881],{"type":46,"value":1882}," * Title: Hero Split",{"type":40,"tag":781,"props":1884,"children":1885},{"style":1473},[1886],{"type":46,"value":1868},{"type":40,"tag":781,"props":1888,"children":1889},{"style":1826},[1890],{"type":46,"value":1891}," * ...",{"type":40,"tag":781,"props":1893,"children":1894},{"style":1473},[1895],{"type":46,"value":1868},{"type":40,"tag":781,"props":1897,"children":1898},{"style":1826},[1899],{"type":46,"value":1900}," *\u002F",{"type":40,"tag":781,"props":1902,"children":1903},{"style":1473},[1904],{"type":46,"value":1868},{"type":40,"tag":781,"props":1906,"children":1907},{"style":1826},[1908],{"type":46,"value":1909},"?>",{"type":40,"tag":781,"props":1911,"children":1912},{"style":1473},[1913],{"type":46,"value":1868},{"type":40,"tag":781,"props":1915,"children":1916},{"style":1826},[1917],{"type":46,"value":1918},"\u003C!-- wp:group ... -->",{"type":40,"tag":781,"props":1920,"children":1921},{"style":1444},[1922],{"type":46,"value":1784},{"type":40,"tag":781,"props":1924,"children":1925},{"style":1444},[1926],{"type":46,"value":1927}," }\n",{"type":40,"tag":781,"props":1929,"children":1930},{"class":783,"line":810},[1931],{"type":40,"tag":781,"props":1932,"children":1933},{"style":1444},[1934],{"type":46,"value":1935},"  ],\n",{"type":40,"tag":781,"props":1937,"children":1938},{"class":783,"line":819},[1939,1943,1948,1952,1956],{"type":40,"tag":781,"props":1940,"children":1941},{"style":1444},[1942],{"type":46,"value":1773},{"type":40,"tag":781,"props":1944,"children":1945},{"style":1776},[1946],{"type":46,"value":1947},"sitewideFlags",{"type":40,"tag":781,"props":1949,"children":1950},{"style":1444},[1951],{"type":46,"value":1784},{"type":40,"tag":781,"props":1953,"children":1954},{"style":1444},[1955],{"type":46,"value":129},{"type":40,"tag":781,"props":1957,"children":1958},{"style":1444},[1959],{"type":46,"value":1960}," [],\n",{"type":40,"tag":781,"props":1962,"children":1963},{"class":783,"line":828},[1964,1968,1973,1977,1981],{"type":40,"tag":781,"props":1965,"children":1966},{"style":1444},[1967],{"type":46,"value":1773},{"type":40,"tag":781,"props":1969,"children":1970},{"style":1776},[1971],{"type":46,"value":1972},"notes",{"type":40,"tag":781,"props":1974,"children":1975},{"style":1444},[1976],{"type":46,"value":1784},{"type":40,"tag":781,"props":1978,"children":1979},{"style":1444},[1980],{"type":46,"value":129},{"type":40,"tag":781,"props":1982,"children":1983},{"style":1444},[1984],{"type":46,"value":1985}," []\n",{"type":40,"tag":781,"props":1987,"children":1988},{"class":783,"line":837},[1989],{"type":40,"tag":781,"props":1990,"children":1991},{"style":1444},[1992],{"type":46,"value":1593},{"type":40,"tag":131,"props":1994,"children":1995},{},[1996,2020,2044],{"type":40,"tag":135,"props":1997,"children":1998},{},[1999,2004,2006,2011,2013,2018],{"type":40,"tag":55,"props":2000,"children":2002},{"className":2001},[],[2003],{"type":46,"value":1779},{"type":46,"value":2005}," — array of objects with ",{"type":40,"tag":55,"props":2007,"children":2009},{"className":2008},[],[2010],{"type":46,"value":1811},{"type":46,"value":2012}," (the pattern's registered slug, matching the file header) and ",{"type":40,"tag":55,"props":2014,"children":2016},{"className":2015},[],[2017],{"type":46,"value":774},{"type":46,"value":2019}," (the full pattern file contents as a string, including the PHP comment header).",{"type":40,"tag":135,"props":2021,"children":2022},{},[2023,2028,2030,2036,2037,2043],{"type":40,"tag":55,"props":2024,"children":2026},{"className":2025},[],[2027],{"type":46,"value":1947},{"type":46,"value":2029}," — optional array of strings naming sitewide concerns (e.g. ",{"type":40,"tag":55,"props":2031,"children":2033},{"className":2032},[],[2034],{"type":46,"value":2035},"\"commercial-font-reckless\"",{"type":46,"value":340},{"type":40,"tag":55,"props":2038,"children":2040},{"className":2039},[],[2041],{"type":46,"value":2042},"\"missing-mobile-hero-image\"",{"type":46,"value":431},{"type":40,"tag":135,"props":2045,"children":2046},{},[2047,2052],{"type":40,"tag":55,"props":2048,"children":2050},{"className":2049},[],[2051],{"type":46,"value":1972},{"type":46,"value":2053}," — optional array of strings with builder observations or deferred items.",{"type":40,"tag":49,"props":2055,"children":2056},{},[2057,2059,2064,2066,2070,2072,2078,2079,2085,2086,2092,2094,2098,2100,2106,2107,2113,2115,2120,2122,2128,2130,2136,2138,2143,2145,2151,2153,2159,2161,2166,2168,2173,2175,2180],{"type":46,"value":2058},"Section markup comes from the ",{"type":40,"tag":55,"props":2060,"children":2062},{"className":2061},[],[2063],{"type":46,"value":127},{"type":46,"value":2065}," catalog. Emit all source-derived ",{"type":40,"tag":83,"props":2067,"children":2068},{},[2069],{"type":46,"value":46},{"type":46,"value":2071}," as literal, pre-escaped HTML in the markup itself — HTML-entity-escape ",{"type":40,"tag":55,"props":2073,"children":2075},{"className":2074},[],[2076],{"type":46,"value":2077},"&",{"type":46,"value":340},{"type":40,"tag":55,"props":2080,"children":2082},{"className":2081},[],[2083],{"type":46,"value":2084},"\u003C",{"type":46,"value":340},{"type":40,"tag":55,"props":2087,"children":2089},{"className":2088},[],[2090],{"type":46,"value":2091},">",{"type":46,"value":2093}," (and quotes inside attributes) at authoring time. Do ",{"type":40,"tag":83,"props":2095,"children":2096},{},[2097],{"type":46,"value":392},{"type":46,"value":2099}," wrap visible text in ",{"type":40,"tag":55,"props":2101,"children":2103},{"className":2102},[],[2104],{"type":46,"value":2105},"\u003C?php echo esc_html(…) ?>",{"type":46,"value":720},{"type":40,"tag":55,"props":2108,"children":2110},{"className":2109},[],[2111],{"type":46,"value":2112},"esc_attr(…)",{"type":46,"value":2114},": ",{"type":40,"tag":55,"props":2116,"children":2118},{"className":2117},[],[2119],{"type":46,"value":490},{"type":46,"value":2121}," sanctions exactly TWO PHP forms — the pattern's doc-comment header and ",{"type":40,"tag":55,"props":2123,"children":2125},{"className":2124},[],[2126],{"type":46,"value":2127},"\u003C?php echo esc_url( get_theme_file_uri('assets\u002F…') ); ?>",{"type":46,"value":2129}," for theme-shipped asset paths (see ",{"type":40,"tag":55,"props":2131,"children":2133},{"className":2132},[],[2134],{"type":46,"value":2135},"section-mapping.md",{"type":46,"value":2137},") — and treats ANY other ",{"type":40,"tag":55,"props":2139,"children":2141},{"className":2140},[],[2142],{"type":46,"value":1863},{"type":46,"value":2144},", including ",{"type":40,"tag":55,"props":2146,"children":2148},{"className":2147},[],[2149],{"type":46,"value":2150},"esc_html('literal')",{"type":46,"value":2152},", as injection. So: visible text → literal escaped HTML; theme-asset URLs → ",{"type":40,"tag":55,"props":2154,"children":2156},{"className":2155},[],[2157],{"type":46,"value":2158},"esc_url( get_theme_file_uri(…) )",{"type":46,"value":2160},"; nothing else emits PHP. The result must pass ",{"type":40,"tag":55,"props":2162,"children":2164},{"className":2163},[],[2165],{"type":46,"value":490},{"type":46,"value":2167}," (escaping\u002Finjection + provenance). A malformed or partial return — missing ",{"type":40,"tag":55,"props":2169,"children":2171},{"className":2170},[],[2172],{"type":46,"value":1779},{"type":46,"value":2174},", wrong types, raw ",{"type":40,"tag":55,"props":2176,"children":2178},{"className":2177},[],[2179],{"type":46,"value":1863},{"type":46,"value":2181}," outside the two sanctioned forms — is treated as a builder failure and triggers a retry or sequential fallback. Never return partial results silently.",{"type":40,"tag":2183,"props":2184,"children":2185},"style",{},[2186],{"type":46,"value":2187},"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":2189,"total":2374},[2190,2211,2225,2239,2256,2271,2285,2300,2317,2328,2343,2359],{"slug":2191,"name":2191,"fn":2192,"description":2193,"org":2194,"tags":2195,"stars":2208,"repoUrl":2209,"updatedAt":2210},"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},[2196,2199,2202,2205],{"name":2197,"slug":2198,"type":15},"Frontend","frontend",{"name":2200,"slug":2201,"type":15},"Productivity","productivity",{"name":2203,"slug":2204,"type":15},"UX Copy","ux-copy",{"name":2206,"slug":2207,"type":15},"UX Design","ux-design",484,"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fstudio","2026-05-06T05:40:01.516544",{"slug":2212,"name":2212,"fn":2213,"description":2214,"org":2215,"tags":2216,"stars":2208,"repoUrl":2209,"updatedAt":2224},"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},[2217,2218,2220,2223],{"name":20,"slug":21,"type":15},{"name":2219,"slug":1434,"type":15},"CSS",{"name":2221,"slug":2222,"type":15},"HTML","html",{"name":13,"slug":14,"type":15},"2026-05-27T07:01:55.629681",{"slug":2226,"name":2226,"fn":2227,"description":2228,"org":2229,"tags":2230,"stars":2208,"repoUrl":2209,"updatedAt":2238},"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},[2231,2234,2237],{"name":2232,"slug":2233,"type":15},"Pricing","pricing",{"name":2235,"slug":2236,"type":15},"Reference","reference",{"name":13,"slug":14,"type":15},"2026-07-02T07:42:33.654791",{"slug":2240,"name":2240,"fn":2241,"description":2242,"org":2243,"tags":2244,"stars":2208,"repoUrl":2209,"updatedAt":2255},"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},[2245,2248,2251,2254],{"name":2246,"slug":2247,"type":15},"CMS","cms",{"name":2249,"slug":2250,"type":15},"Migration","migration",{"name":2252,"slug":2253,"type":15},"Web Development","web-development",{"name":13,"slug":14,"type":15},"2026-07-09T06:47:33.454311",{"slug":2257,"name":2257,"fn":2258,"description":2259,"org":2260,"tags":2261,"stars":2208,"repoUrl":2209,"updatedAt":2270},"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},[2262,2265,2266,2269],{"name":2263,"slug":2264,"type":15},"Audit","audit",{"name":2197,"slug":2198,"type":15},{"name":2267,"slug":2268,"type":15},"Performance","performance",{"name":13,"slug":14,"type":15},"2026-05-06T05:40:06.433267",{"slug":2272,"name":2272,"fn":2273,"description":2274,"org":2275,"tags":2276,"stars":2208,"repoUrl":2209,"updatedAt":2284},"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},[2277,2280,2283],{"name":2278,"slug":2279,"type":15},"Content Creation","content-creation",{"name":2281,"slug":2282,"type":15},"Plugin Development","plugin-development",{"name":13,"slug":14,"type":15},"2026-05-27T07:01:58.249105",{"slug":2286,"name":2286,"fn":2287,"description":2288,"org":2289,"tags":2290,"stars":2208,"repoUrl":2209,"updatedAt":2299},"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},[2291,2292,2295,2298],{"name":2263,"slug":2264,"type":15},{"name":2293,"slug":2294,"type":15},"Marketing","marketing",{"name":2296,"slug":2297,"type":15},"SEO","seo",{"name":13,"slug":14,"type":15},"2026-05-06T05:40:05.196367",{"slug":2301,"name":2301,"fn":2302,"description":2303,"org":2304,"tags":2305,"stars":2208,"repoUrl":2209,"updatedAt":2316},"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},[2306,2309,2312,2315],{"name":2307,"slug":2308,"type":15},"Design","design",{"name":2310,"slug":2311,"type":15},"Product Management","product-management",{"name":2313,"slug":2314,"type":15},"Specs","specs",{"name":13,"slug":14,"type":15},"2026-05-06T05:40:02.739409",{"slug":2318,"name":2318,"fn":2319,"description":2320,"org":2321,"tags":2322,"stars":2208,"repoUrl":2209,"updatedAt":2327},"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},[2323,2326],{"name":2324,"slug":2325,"type":15},"CLI","cli",{"name":13,"slug":14,"type":15},"2026-04-06T18:02:57.150231",{"slug":2329,"name":2329,"fn":2330,"description":2331,"org":2332,"tags":2333,"stars":2208,"repoUrl":2209,"updatedAt":2342},"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},[2334,2337,2340,2341],{"name":2335,"slug":2336,"type":15},"Content Strategy","content-strategy",{"name":2338,"slug":2339,"type":15},"Data Cleaning","data-cleaning",{"name":2296,"slug":2297,"type":15},{"name":13,"slug":14,"type":15},"2026-05-06T05:40:03.966799",{"slug":2344,"name":2344,"fn":2345,"description":2346,"org":2347,"tags":2348,"stars":2208,"repoUrl":2209,"updatedAt":2358},"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},[2349,2352,2353,2356],{"name":2350,"slug":2351,"type":15},"Animation","animation",{"name":2307,"slug":2308,"type":15},{"name":2354,"slug":2355,"type":15},"Typography","typography",{"name":2357,"slug":2344,"type":15},"Visual Design","2026-07-24T05:40:57.887452",{"slug":2360,"name":2360,"fn":2361,"description":2362,"org":2363,"tags":2364,"stars":2208,"repoUrl":2209,"updatedAt":2373},"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},[2365,2368,2369,2372],{"name":2366,"slug":2367,"type":15},"Debugging","debugging",{"name":2197,"slug":2198,"type":15},{"name":2370,"slug":2371,"type":15},"Screenshots","screenshots",{"name":2357,"slug":2344,"type":15},"2026-06-06T07:09:59.809812",81,{"items":2376,"total":2470},[2377,2392,2403,2416,2426,2441,2457],{"slug":2378,"name":2378,"fn":2379,"description":2380,"org":2381,"tags":2382,"stars":22,"repoUrl":23,"updatedAt":2391},"adapt","build platform adapters for content extraction","Build a new platform adapter to extract content from an unsupported platform (Blogger, Ghost, Tumblr, etc.)",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2383,2386,2387,2390],{"name":2384,"slug":2385,"type":15},"Automation","automation",{"name":2338,"slug":2339,"type":15},{"name":2388,"slug":2389,"type":15},"Data Engineering","data-engineering",{"name":13,"slug":14,"type":15},"2026-05-09T05:32:13.987972",{"slug":2393,"name":2393,"fn":2394,"description":2395,"org":2396,"tags":2397,"stars":22,"repoUrl":23,"updatedAt":2402},"compose-page-blocks","compose WordPress block markup from HTML","Compose a single liberated page's WordPress block-editor markup from its rendered HTML and screenshot. Inputs are a sanitized HTML file, a desktop screenshot, the design-foundation tokens, the URL's archetype (page\u002Fpost\u002Fproduct\u002Fetc.), and the source URL. Output is a string of valid block markup that round-trips through parse_blocks, uses theme tokens (no inlined hex colors), and contains only text drawn from the source HTML. Call per-page during the streaming watch loop after extraction has produced HTML+screenshot for that URL. Use when a freshly-imported page needs `post_content` upgraded from raw HTML into block-editor markup so the replica theme's tokens, gradients, and patterns actually render.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2398,2399,2400,2401],{"name":20,"slug":21,"type":15},{"name":2278,"slug":2279,"type":15},{"name":2221,"slug":2222,"type":15},{"name":13,"slug":14,"type":15},"2026-06-08T08:17:34.212397",{"slug":2404,"name":2404,"fn":2405,"description":2406,"org":2407,"tags":2408,"stars":22,"repoUrl":23,"updatedAt":2415},"creating-blocks","create new WordPress blocks","Templates and guidelines for creating new WordPress blocks from scratch — load this before generating block files",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2409,2410,2413,2414],{"name":20,"slug":21,"type":15},{"name":2411,"slug":2412,"type":15},"Full Site Editing","full-site-editing",{"name":2281,"slug":2282,"type":15},{"name":13,"slug":14,"type":15},"2026-06-08T08:17:49.413995",{"slug":60,"name":60,"fn":2417,"description":2418,"org":2419,"tags":2420,"stars":22,"repoUrl":23,"updatedAt":2425},"create WordPress block themes","Guidelines for creating new WordPress block themes from scratch — load this before generating theme files",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2421,2422,2423,2424],{"name":20,"slug":21,"type":15},{"name":2411,"slug":2412,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-06-08T08:17:50.666611",{"slug":2427,"name":2427,"fn":2428,"description":2429,"org":2430,"tags":2431,"stars":22,"repoUrl":23,"updatedAt":2440},"design-foundations","build design foundation JSON from sites","Build a coherent design-foundation JSON from a liberated site — semantic color\u002Ftypography\u002Fspacing roles with evidence trails. Consumes the partial scaffold produced by liberate_design_foundation_scaffold plus aggregate HTML\u002FCSS analysis and representative rendered HTML; produces a complete design-foundation matching the schema. Call after liberation, before theme generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2432,2435,2436,2439],{"name":2433,"slug":2434,"type":15},"Data Modeling","data-modeling",{"name":2307,"slug":2308,"type":15},{"name":2437,"slug":2438,"type":15},"Design System","design-system",{"name":2197,"slug":2198,"type":15},"2026-06-08T08:17:44.457834",{"slug":2442,"name":2442,"fn":2443,"description":2444,"org":2445,"tags":2446,"stars":22,"repoUrl":23,"updatedAt":2456},"design-qa","run visual QA on WordPress themes","Visual-QA loop run after replica theme install and content import. Captures replica screenshots, applies a hard responsiveness gate at 390px AND a hard per-section visual-parity gate (measured SectionParity records, verdict computed by buildRunReport), runs qualitative vision review of source\u002Freplica pairs, checks accessibility, and drives a per-section escalation ladder of fixes via editing-themes\u002Fediting-blocks\u002Frebuild-section (R1 CSS → R2 spec-rebuild → R3 re-extract → R4a AI canonical-block rebuild → R4b deterministic styled-island floor) — escalating unresolved divergences to the operator rather than shipping them. Orchestration-internal — invoked by the replicate-with-blocks\u002Fliberate orchestrators, not directly by users.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2447,2450,2451,2454,2455],{"name":2448,"slug":2449,"type":15},"QA","qa",{"name":2370,"slug":2371,"type":15},{"name":2452,"slug":2453,"type":15},"Testing","testing",{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-06-08T08:17:45.698278",{"slug":2458,"name":2458,"fn":2459,"description":2460,"org":2461,"tags":2462,"stars":22,"repoUrl":23,"updatedAt":2469},"diagnose","debug failed data extraction processes","Debug failed or low-quality extractions by analyzing logs, probing the source site, and identifying root causes",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2463,2464,2465,2468],{"name":2388,"slug":2389,"type":15},{"name":2366,"slug":2367,"type":15},{"name":2466,"slug":2467,"type":15},"Logs","logs",{"name":2448,"slug":2449,"type":15},"2026-05-10T05:48:11.267642",21]