# JoonWeb AI Developer Instructions You are an expert AI assistant designed to help developers build apps, themes, and integrations on the JoonWeb platform. ## Official AI Skills & Theme Section Generator When asked to build, modify, or generate JoonWeb themes, `.jw` sections (Hero, Header, Footer, Product Feed, Cart Drawer, Blog Feed, Siteform, Popups), or store components: You MUST load and strictly adhere to the official **JoonWeb Theme Section Skill**: - **Official Skill URL**: https://joonweb.dev/skills/jw-theme-sections/SKILL.md - **Raw Markdown Reference**: https://joonweb.dev/skills/jw-theme-sections/SKILL.md ### Mandatory Section Generation Rules: 1. **Clarify Store vs. Informative Site First**: If not specified, ask whether the section is for an **Online Store** (e-commerce catalog, cart, checkout) or an **Informative Website** (company showcase, services, portfolio, blog, lead capture). 2. **Strict JW Template Logic & Syntax Rules**: - Use `{% if %}`, `{% elseif %}`, `{% else %}`, `{% endif %}`. - NEVER use Liquid tags like `{% elif %}`. - No parentheses around `if` conditions: `{% if var == "value" %}`. 3. **File Order**: Header comment -> Variables `{% set %}` -> `
{{ section.settings.title }}
``` This pattern gives merchants granular control over font sizes, letter spacing, and weights on both desktop and mobile screens. ##### Global Theme Colors & Background Classes (.background1 to .background6) Every JoonWeb theme defines 6 global CSS color tokens in `theme_config.json` (`--color1` through `--color6`). Storefront sections use 6 harmonious background utility classes (`.background1` to `.background6`) that automatically map background colors with contrast-optimized text and border colors: | Class | Background Token | Text Color Token | Border Color Token | Typical Application | |---|---|---|---|---| | `.background1` | `var(--color1)` | `var(--color5)` | `var(--border1)` | Dark primary header / hero / dark mode | | `.background2` | `var(--color2)` | `var(--color6)` | `var(--border1)` | Secondary surface / widget cards | | `.background3` | `var(--color3)` | `var(--color5)` | `var(--border1)` | Accent callout / active state background | | `.background4` | `var(--color4)` | `var(--color6)` | `var(--border1)` | Subtle light container / muted banner | | `.background5` | `var(--color5)` | `var(--color6)` | `var(--border1)` | Crisp white / default light background | | `.background6` | `var(--color6)` | `var(--color5)` | `var(--border1)` | Deep charcoal / dark footer background | ### Dynamic Color Palette Binding ```jw {# Section wrapper uses merchant's selected color scheme #}
{# Inner card uses secondary scheme #}

{{ block.settings.title }}

``` ##### Button Styles & Dynamic Border Radius ### Button Utility Classes JoonWeb themes standardize button dimensions and hover transitions using `.btns`: - `.btns`: Base button styling with smooth transition and cursor pointer. - `.btns-sm`: Small compact button (e.g. quick buy or tag triggers). - `.btns-md`: Standard medium button (default for add-to-cart). - `.btns-lg`: Large call-to-action button (hero sliders). - `.btns-xlg`: Extra-large prominent action button. ```jw {% set button_size_typ = { "btns-sm": "btns-sm", "btns-md": "btns-md", "btns-lg": "btns-lg", "btns-xlg": "btns-xlg" } %} {% set button_typ = button_size_typ[section.desktop.buttonSize] ?? 'btns-md' %} {{ section.settings.link.label | default('Shop Now') }} ``` ### Dynamic Border Radius Expose slider controls in `{% rules %}` and apply dynamic border radius to cards and buttons: ```css ``` --- ### Section & Block System #### Section Anatomy & Block System ##### Anatomy of a .jw Section File A `.jw` section is a self-contained storefront building block that combines **dynamic template markup**, **scoped styling**, **client-side JavaScript**, and an embedded **`{% rules %}` JSON schema**. ### Production Template Anatomy (Based on cart.jw) ```jw {# 1. DYNAMIC CONFIGURATION & VARIABLE MAPPING #} {% set button_size_typ = { "btns-sm": "btns-sm", "btns-md": "btns-md", "btns-lg": "btns-lg", "btns-xlg": "btns-xlg" } %} {% set button_typ = button_size_typ[section.desktop.buttonSize] ?? 'btns-md' %} {# 2. SCOPED STYLES (Scoped with #{{ section.id }}) #} {# 3. SECTION MARKUP & STOREFRONT DATA BINDING #}
{% if title %}
{{ title }}
{% endif %} {# RENDER BLOCKS OR CUSTOM CONTENT #} {% if section.blocks is defined and section.blocks | length > 0 %}
{% for block in section.blocks %}
{% switch block.type %} {% case "feature_card" %}
{% if block.settings.icon %} {% endif %}

{{ block.settings.title }}

{{ block.settings.description }}

{% default %} {{ render_block(block) }} {% endswitch %}
{% endfor %}
{% endif %}
{# 4. SCOPED JAVASCRIPT #} {# 5. EMBEDDED RULES SCHEMA #} {% rules %} { "name": "Feature Highlights", "settings": [ { "type": "text", "id": "title", "label": "Section Heading", "default": "Why Choose Us" }, { "type": "range", "id": "borderRadius", "label": "Card Border Radius", "min": 0, "max": 30, "step": 2, "unit": "px", "default": 12 } ], "blocks": [ { "type": "feature_card", "name": "Feature Card", "settings": [ { "type": "image_picker", "id": "icon", "label": "Icon Image" }, { "type": "text", "id": "title", "label": "Title", "default": "Fast Shipping" }, { "type": "textarea", "id": "description", "label": "Description", "default": "Delivery within 48 hours." } ] }, { "type": "themes" }, { "type": "apps" } ], "presets": [ { "name": "Feature Highlights", "category": "Promotional" } ] } {% endrules %} ``` ##### Critical Syntax Invariant: The {# Spacing Rule In JW template syntax, template comments start with `{#` and end with `#}`. ### ⚠️ The CSS Collision Pitfall In CSS ` {% rules %} { "name": "Premium Header", "blocks": [ { "type": "navigation" }, { "type": "themes" }, { "type": "apps" } ], "settings": [ { "type": "image_picker", "id": "logo", "label": "Site Logo" }, { "type": "color_background", "id": "bg_color", "label": "Background Color", "default": "#ffffff" }, { "type": "color", "id": "text_color", "label": "Text Color", "default": "#000000" }, { "type": "button", "id": "cta_button", "label": "Call to Action" } ], "presets": [ { "blocks": [ { "type": "navigation", "settings": { "links": [ { "label": "Home", "type": "home" }, { "label": "About", "type": "none" }, { "label": "Services", "type": "none" } ] } } ] } ] } {% endrules %} ``` --- #### Footer ```html {% set bg_color = section.settings.bg_color | default("#111827") %} {% set text_color = section.settings.text_color | default("#f9fafb") %} {% set pad_y = section.settings.padding_y | default(60) %} {% rules %} { "name": "Premium Footer", "blocks": [ { "type": "columns", "name": "Footer Column", "settings": [ { "type": "text", "id": "heading", "label": "Column Heading", "default": "Resources" } ], "blocks": [ { "type": "navigation", "name": "Column Menu" }, { "type": "themes" }, { "type": "apps" } ] }, { "type": "themes" }, { "type": "apps" } ], "settings": [ { "type": "color_background", "id": "bg_color", "label": "Background Color", "default": "#111827" }, { "type": "color", "id": "text_color", "label": "Text Color", "default": "#f9fafb" }, { "type": "range", "id": "padding_y", "label": "Vertical Padding", "min": 20, "max": 150, "step": 10, "unit": "px", "default": 60 }, { "type": "socialicon", "id": "social_links", "label": "Social Media Links" } ], "presets": [ { "blocks": [ { "type": "columns", "settings": { "heading": "Company" }, "blocks": [{ "type": "navigation" }] }, { "type": "columns", "settings": { "heading": "Support" }, "blocks": [{ "type": "navigation" }] } ] } ] } {% endrules %} ``` --- #### Blog Grid Feed ```html {% set bg_color = section.settings.bg_color | default("#ffffff") %} {% set pad_y = section.settings.padding_y | default(60) %}
{# SECTION HEADER #}

{{ section.settings.title | default('Latest Articles') }}

{{ section.settings.subtitle | default('Stay updated with our latest news.') }}

{# BLOG FEED LOOP #} {% if blog.items %}
{% for itemkey, blog_post in blog.items %}
{# IMAGE #} {{ blog_post['img.alt'] | default(blog_post.title) }} {# CONTENT #}
{# META DATA #} {% if blog_post.created or blog_post.author or blog_post.views %}
{% if blog_post.created %} {{ blog_post.created|date("M d, Y") }}{% endif %} {% if blog_post.author %} {{ blog_post.author }}{% endif %} {% if blog_post.views %} {{ blog_post.views }} Views{% endif %}
{% endif %} {# TITLE & DESC #} {% if blog_post.title %}

{{ blog_post.title }}

{% endif %} {% if blog_post.description %}

{{ blog_post.description }}

{% endif %} {# READ MORE #} {% if blog_post.url %} Read More {% endif %}
{% endfor %}
{% else %}

No blog posts available at the moment.

{% endif %}
{% rules %} { "name": "Blog Grid Feed", "type": "BlogFeed", "blocks": [ { "type": "themes" }, { "type": "apps" } ], "settings": [ { "type": "text", "id": "title", "label": "Section Title", "default": "Latest Articles" }, { "type": "text", "id": "subtitle", "label": "Section Subtitle", "default": "Stay updated with our latest news." }, { "type": "color_background", "id": "bg_color", "label": "Background Color", "default": "#ffffff" }, { "type": "range", "id": "padding_y", "label": "Vertical Padding", "min": 0, "max": 150, "step": 10, "unit": "px", "default": 60 } ], "presets": [] } {% endrules %} ``` --- #### Product Grid Feed ```html {% set bg_color = section.settings.bg_color | default("#ffffff") %} {% set text_color = section.settings.text_color | default("#333333") %} {% set pad_y = section.settings.padding_y | default(60) %}

{{ section.settings.title | default('Featured Products') }}

{# PRODUCT LOOP #} {% if products %}
{% for product in products %}
{# RIBBON / TAG #} {% if product.ribbon %}
{{ product.ribbon }}
{% endif %} {# DISCOUNT TAG #} {% if product.discount %}
{{ product.discount }}
{% endif %} {# WISHLIST TOGGLE (CORE CRM LINKED) #}
{# PRODUCT MEDIA #} {{ product['cover.alt'] | default(product.title) }} {% if product.media %} {{ product['media.alt'] | default('hover image') }} {% endif %} {# PRODUCT INFO #}
{{ product.title }}
{% if product.sale_price %} {{ site.currency }}{{ product.sale_price }} {% endif %} {% if product.price %} {{ site.currency }}{{ product.price }} {% endif %}
{# ADD TO CART (CORE CRM LINKED) #} {% if product.in_stock %} {% else %} {% endif %}
{% endfor %}
{% else %}

No products available.

{% endif %}
{% rules %} { "name": "E-Commerce Product Feed", "type": "ProductFeed", "blocks": [ { "type": "themes" }, { "type": "apps" } ], "settings": [ { "type": "text", "id": "title", "label": "Section Title", "default": "Featured Products" }, { "type": "color_background", "id": "bg_color", "label": "Background Color", "default": "#ffffff" }, { "type": "color", "id": "text_color", "label": "Text Color", "default": "#333333" }, { "type": "range", "id": "padding_y", "label": "Vertical Padding", "min": 0, "max": 150, "step": 10, "unit": "px", "default": 60 } ], "presets": [] } {% endrules %} ``` --- #### Dynamic Site Form ```html {% set bg_color = section.settings.bg_color | default("#f3f4f6") %} {% set pad_y = section.settings.padding_y | default(60) %}

{{ section.settings.title | default("Contact Us") }}

{{ section.settings.subtitle | default("We'd love to hear from you.") }}

{# DYNAMIC FORM RENDERING #} {% if section.blocks is defined and section.blocks|length > 0 %} {% for block in section.blocks %} {% switch block.type %} {% case "siteform" %}
{% if block.form %} {% set form = block.form %}
{# SYSTEM REQUIRED HIDDEN FIELDS #} {{ form.signature }}
{% for field in form.fields %}
{% if field.hideLabel != "yes" %} {% endif %} {# RENDER INPUT TYPES #} {% if field.type in ["text","email","tel","number","password","date","datetime"] %} {% elseif field.type == "textarea" %} {% elseif field.type == "dropdown" %} {% elseif field.type == "radio" %}
{% for opt in field.extra.options %}
{% endfor %}
{% elseif field.type == "checkbox" %}
{% endif %}
{% endfor %} {# PAYMENT GATEWAY INJECTION (REQUIRED) #} {% if form.payment.enabled %}
{% for item in form.payment.items %} {% set rid = "payrad" ~ form.id ~ loop.index %}
{% endfor %}
{% endif %} {# OTP FIELD INJECTION (REQUIRED) #} {% if form.otp.enabled %} {% endif %} {# CAPTCHA INJECTION (REQUIRED) #} {% if form.captcha_html %}
{{ form.captcha_html | raw }}
{% endif %} {# SUBMIT BUTTON #}
{% endif %}
{% default %} {{ render_block(block) }} {% endswitch %} {% endfor %} {% endif %}
{% rules %} { "name": "Dynamic Form Capture", "blocks": [ { "type": "siteform", "name": "Form Container", "settings": [] }, { "type": "themes" }, { "type": "apps" } ], "settings": [ { "type": "text", "id": "title", "label": "Heading", "default": "Contact Us" }, { "type": "text", "id": "subtitle", "label": "Sub Heading", "default": "We'd love to hear from you." }, { "type": "color_background", "id": "bg_color", "label": "Background Color", "default": "#f3f4f6" }, { "type": "range", "id": "padding_y", "label": "Vertical Padding", "min": 0, "max": 150, "step": 10, "unit": "px", "default": 60 } ], "presets": [ { "blocks": [ { "type": "siteform", "formType": "basic", "fields": [ { "label": "Full Name", "placeholder": "John Doe", "required": "yes", "mode": "system", "name": "firstName", "type": "text" }, { "label": "Email", "type": "email", "required": "yes", "placeholder": "hello@example.com", "mode": "system", "name": "email" }, { "label": "Message", "type": "textarea", "required": "yes", "placeholder": "How can we help?", "mode": "system", "name": "message" } ] } ] } ] } {% endrules %} ``` --- ### Conversion Guide #### Converting Static HTML to Dynamic .jw Sections ##### Overview: The 5-Step Section Conversion Workflow Converting static HTML into a fully dynamic, merchant-editable JoonWeb section requires 5 straightforward steps: 1. **Identify Editable Elements**: Determine which headings, images, links, and collections should be configurable in the Site Builder. 2. **Implement Scoped CSS**: Namespace all styles with `#{{ section.id }}` to prevent CSS bleed and respect the `{ #` spacing rule. 3. **Bind JW Variables & Dynamic Objects**: Replace static copy with `{{ section.settings.* }}`, `{{ site.currency }}`, and `JWCart` methods. 4. **Render Dynamic Blocks**: Wrap repetitive cards or columns in `{% for block in section.blocks %}` with `{{ jw_attributes(block) }}`. 5. **Attach Embedded {% rules %}**: Define the JSON schema blueprint with settings, blocks, and default presets. ##### Step 1: Start with Static HTML & Bootstrap 5.3 Here is a static Bootstrap 5.3 feature section before conversion: ```html

Why Shop With Us

Premium quality guaranteed with every order

Fast Express Shipping

Dispatched within 24 hours.

``` ##### Step 2: Add Scoped Styles & Responsive Padding Add scoped styles using `#{{ section.id }}`. ⚠️ **Crucial Invariant**: Always ensure there is a whitespace between `{` and `#` (e.g. `{ #{{ section.id }}`) so the JW Engine does not mistake it for a comment tag (`{#`): ```jw ``` ##### Step 3: Convert Static Markup into Dynamic JW Template Replace static text with JW template expressions and block iterations: ```jw
{# Section Heading #} {% if section.settings.heading %}

{{ section.settings.heading }}

{% if section.settings.subheading %}

{{ section.settings.subheading }}

{% endif %}
{% endif %} {# Dynamic Blocks Grid #} {% if section.blocks is defined and section.blocks | length > 0 %}
{% for block in section.blocks %}
{% switch block.type %} {% case "feature_item" %}
{% if block.settings.icon %} {{ block.settings.title }} {% endif %}

{{ block.settings.title }}

{{ block.settings.description }}

{% default %} {{ render_block(block) }} {% endswitch %}
{% endfor %}
{% endif %}
``` ##### Step 4: Append Embedded {% rules %} JSON Schema Place the `{% rules %}` block at the very end of your `.jw` file to register controls with the Site Builder: ```jw {% rules %} { "name": "Feature Highlights", "settings": [ { "type": "text", "id": "heading", "label": "Section Heading", "default": "Why Shop With Us" }, { "type": "textarea", "id": "subheading", "label": "Subheading", "default": "Premium quality guaranteed with every order" }, { "type": "range", "id": "borderRadius", "label": "Card Border Radius", "min": 0, "max": 30, "step": 2, "unit": "px", "default": 12 } ], "blocks": [ { "type": "feature_item", "name": "Feature Item", "settings": [ { "type": "image_picker", "id": "icon", "label": "Feature Icon" }, { "type": "text", "id": "title", "label": "Title", "default": "Fast Shipping" }, { "type": "textarea", "id": "description", "label": "Description", "default": "Dispatched within 24 hours." } ] }, { "type": "themes" }, { "type": "apps" } ], "presets": [ { "name": "Feature Highlights", "category": "Promotional", "blocks": [ { "type": "feature_item", "settings": { "title": "Fast Shipping", "description": "Dispatched within 24 hours." } }, { "type": "feature_item", "settings": { "title": "Secure Payments", "description": "100% encrypted checkout." } }, { "type": "feature_item", "settings": { "title": "Easy Returns", "description": "7-day hassle-free returns." } } ] } ] } {% endrules %} ``` ##### Step 5: Quality Checklist for JoonWeb Themes Before publishing or submitting a section: - [x] **No Forbidden Tags**: Ensure there are zero mentions of external templating engines. Strictly use JW Engine tags. - [x] **Comment Collision Check**: Verified that all `{ #{{ section.id }}` styles have spaces between `{` and `#`. - [x] **Dynamic Click-to-Edit**: `{{ jw_attributes(block) }}` is attached to each block container. - [x] **Fallback Block Support**: `{{ render_block(block) }}` is called in the `{% default %}` switch branch. - [x] **Universal App Extension Compatibility**: `{"type": "themes"}` and `{"type": "apps"}` are included in `blocks` array. - [x] **Valid JSON Schema**: No trailing commas or invalid JSON syntax in `{% rules %}`. --- ### AI Section Skills #### Build JoonWeb (.JW) Section with ChatGPT ##### Overview & 1-Click Launch with ChatGPT JoonWeb enables developers, merchants, and theme creators to rapidly generate production-ready `.jw` sections using OpenAI's **ChatGPT** (GPT-4o, ChatGPT Plus, and Custom GPTs). By pairing ChatGPT with the official **`jw-theme-sections`** skill, you can generate responsive storefront sections with Bootstrap 5.3 utilities, scoped styles, and fully populated JSON rules schemas in seconds. --- ### πŸš€ 1-Click Execution Click below to immediately open ChatGPT with the official JoonWeb skill and prompt pre-loaded: [**⚑ Launch Directly in ChatGPT**](https://chatgpt.com/?hints=search&q=You%20are%20an%20Expert%20JoonWeb%20Theme%20Developer.%20Follow%20the%20official%20JoonWeb%20section%20specifications%20at%20https%3A%2F%2Fjoonweb.dev%2Fskills%2Fjw-theme-sections%2FSKILL.md%20to%20build%20a%20production-ready%20.jw%20section.) > **Skill File Reference:** [https://joonweb.dev/skills/jw-theme-sections/SKILL.md](https://joonweb.dev/skills/jw-theme-sections/SKILL.md) ##### ChatGPT Prompt Template & Workflow ### JW Language Conditionals & Truthiness | Legacy Syntax | JW Language Equivalent (Native) | |---|---| | `{% if title != blank %}` | `{% if title is not empty %}` or `{% if title != '' %}` | | `{% if title != nil %}` | `{% if title is not null %}` | | `{% if title != "" %}` | `{% if title != '' %}` | | `{% if title != blank and title != nil %}` | `{% if title is defined and title is not empty %}` | | `{% if title == blank %}` | `{% if title is empty %}` or `{% if title == '' %}` | | `{% if title == nil %}` | `{% if title is null %}` | ### Master Prompt for ChatGPT Copy and paste the following prompt into ChatGPT to generate any custom section: ```markdown You are an Expert JoonWeb Theme Developer. Follow the official specifications: https://joonweb.dev/skills/jw-theme-sections/SKILL.md Create a production-ready, ultra-premium [SECTION_NAME] section in .jw format for an [Online Store / Informative Website]. Strict Requirements: 1. Top Comment: {# Copy and paste this code directly into the JoonWeb Theme Editor (.jw file) #} 2. File Order (Mandatory): Variables {% set %} -> {% rules %} { "name": "Hero Banner", "settings": [ { "type": "text", "id": "heading", "label": "Main Heading", "default": "Next-Gen Digital Commerce" }, { "type": "textarea", "id": "subheading", "label": "Subheading", "default": "Elevate your storefront experience." }, { "type": "text", "id": "btn_text", "label": "Button Label", "default": "Shop New Arrivals" }, { "type": "url", "id": "btn_link", "label": "Button URL", "default": "/collections/all" } ], "presets": [ { "name": "Hero Banner", "settings": { "heading": "Next-Gen Digital Commerce", "subheading": "Elevate your storefront experience.", "btn_text": "Shop New Arrivals", "btn_link": "/collections/all" } } ] } {% endrules %} ``` ### Installation Save the generated code as `sections/[section_name].jw` in your theme folder. It will instantly appear in the JoonWeb visual editor sidebar for merchants to add and customize! --- #### Build JoonWeb Section with Claude ##### Overview & Claude Setup Anthropic's **Claude 3.5 Sonnet** offers industry-leading reasoning for structural code generation, responsive Bootstrap 5.3 markup, and JSON schema formatting. By linking Claude to the official **`jw-theme-sections`** skill, you can generate complete, error-free `.jw` templates that adhere strictly to JoonWeb's storefront architecture. --- ### Quick Launch (1-Click Pre-Loaded Prompt) [**⚑ Launch in Claude with Pre-Loaded Prompt**](https://claude.ai/new?q=You%20are%20an%20Expert%20JoonWeb%20Theme%20Developer.%20Follow%20the%20official%20JoonWeb%20section%20specifications%20at%20https%3A%2F%2Fjoonweb.dev%2Fskills%2Fjw-theme-sections%2FSKILL.md%20to%20build%20a%20production-ready%20.jw%20section.) Claude natively supports instant prompt pre-loading via URL parameter (`https://claude.ai/new?q=...`), allowing you to start generating sections in one click. ### Integrating the Skill into Claude Projects 1. Open [Claude.ai](https://claude.ai) and navigate to **Projects**. 2. Create or open your JoonWeb development project. 3. Under **Project Knowledge**, add a reference or paste the contents of: `https://joonweb.dev/skills/jw-theme-sections/SKILL.md` 4. Now, any section generation prompt in your project will automatically follow official JoonWeb guidelines. ##### Claude Prompt Template Copy and paste this prompt directly into your Claude chat: ```markdown Please review the official JoonWeb Theme Development Skill: https://joonweb.dev/skills/jw-theme-sections/SKILL.md Generate a complete, production-ready `.jw` section for: [SECTION_NAME]. Architecture Guidelines: 1. Top Comment: {# Copy and paste this code directly into the JoonWeb Theme Editor (.jw file) #} 2. File Order: Variables {% set %} -> {% rules %} { "name": "Hero Banner", "settings": [ { "type": "text", "id": "heading", "label": "Main Heading", "default": "Next-Gen Digital Commerce" }, { "type": "textarea", "id": "subheading", "label": "Subheading", "default": "Elevate your storefront experience." }, { "type": "text", "id": "btn_text", "label": "Button Label", "default": "Shop New Arrivals" }, { "type": "url", "id": "btn_link", "label": "Button URL", "default": "/collections/all" } ], "presets": [ { "name": "Hero Banner", "settings": { "heading": "Next-Gen Digital Commerce", "subheading": "Elevate your storefront experience.", "btn_text": "Shop New Arrivals", "btn_link": "/collections/all" } } ] } {% endrules %} ``` ### Installation Save the generated code as `sections/[section_name].jw` in your theme folder. It will instantly appear in the JoonWeb visual editor sidebar for merchants to add and customize! --- #### Build JoonWeb Section with Claude ##### Overview & Claude Setup Anthropic's **Claude 3.5 Sonnet** offers industry-leading reasoning for structural code generation, responsive Bootstrap 5.3 markup, and JSON schema formatting. By linking Claude to the official **`jw-theme-sections`** skill, you can generate complete, error-free `.jw` templates that adhere strictly to JoonWeb's storefront architecture. --- ### Quick Launch (1-Click Pre-Loaded Prompt) [**⚑ Launch in Claude with Pre-Loaded Prompt**](https://claude.ai/new?q=You%20are%20an%20Expert%20JoonWeb%20Theme%20Developer.%20Follow%20the%20official%20JoonWeb%20section%20specifications%20at%20https%3A%2F%2Fjoonweb.dev%2Fskills%2Fjw-theme-sections%2FSKILL.md%20to%20build%20a%20production-ready%20.jw%20section.) Claude natively supports instant prompt pre-loading via URL parameter (`https://claude.ai/new?q=...`), allowing you to start generating sections in one click. ### Integrating the Skill into Claude Projects 1. Open [Claude.ai](https://claude.ai) and navigate to **Projects**. 2. Create or open your JoonWeb development project. 3. Under **Project Knowledge**, add a reference or paste the contents of: `https://joonweb.dev/skills/jw-theme-sections/SKILL.md` 4. Now, any section generation prompt in your project will automatically follow official JoonWeb guidelines. ##### Claude Prompt Template Copy and paste this prompt directly into your Claude chat: ```markdown Please review the official JoonWeb Theme Development Skill: https://joonweb.dev/skills/jw-theme-sections/SKILL.md Generate a complete, production-ready `.jw` section for: [SECTION_NAME]. Architecture Guidelines: 1. Top Comment: {# Copy and paste this code directly into the JoonWeb Theme Editor (.jw file) #} 2. File Order: Variables {% set %} ->