These rules assume a Tailwind + DaisyUI site (
Styling: tailwind-daisy, the default).select_siteandlist_site_filesprint the site'sStyling:line.tailwind: DaisyUI is off, sobtn,card,badge,hero,navbar… render as nothing; build them from utilities and palette tokens.own-css(an imported site): reuse the classes itstheme.cssand<style>s define; Tailwind compiles only classes that CSS doesn't define, and palette tokens and DaisyUI aren't its design system. Library blocks are written fortailwind-daisy: on the other two, rewrite theirbtn/cardclasses.
Blocks are Liquid snippets: reference material, not the default. Design each section for the business, using get_block to see how a proven layout is put together. Place one with apply_kit_block only when it already fits the design as-is, then edit the copy. Library blocks and templates carry no JavaScript (it is stripped when they are saved): a block's behaviour is native HTML or a data-* attribute, and a site you build may add JS on top.
search_blocks
- Returns one page. The header shows total N and page X of Y. If Y is 1, that is the complete result set. If Y > 1, call again with
page: 2(same filters) or raiselimit(max 100).list_blocks({ category })lists many slugs at once. - Pass
categories/stylesarrays to OR-match in one call instead of parallel searches. - For layout intent pass
qwith short keywords ("split hero", "form card", "photo backdrop"); results then sort by relevance. Category-only searches default to newest; passsort: "popular"for usage rank. - Compare finalists by description + tags. Use the slug exactly as shown.
- Style cohesion: filter by
preset/styleand pick blocks matching what's already on the page. - If filters match nothing, the server drops
subcategory, then returns recent blocks. On "Fallback — not an exact match", pick the closest slug and adapt copy — do not loop.
apply_kit_block
slugis a library block. It is copied into a page file with fresh ids:pageId(default home),position: 0= top, otherwisebefore/after= exact page text to insert next to.- Headers and footers are partials (
partials/header.liquid,partials/footer.liquid): read and rewrite them with edit_site_file. - The copy is yours: change its text and classes with edit_site_file. A block is a starting point, not a link. To reuse one thing in many places, make it a partial and
{% render %}it (list_components, rename_component, delete_component).
Site build order
set_theme → site.json company fields → header and footer partials → page sections (one section per edit) → update_page seo.title / seo.description on every page → audit_seo, audit_accessibility, screenshot_site.