← BrainerceCONTENT HISTORY

Update to Brainerce

Snapshot Oct 24, 2026 · 18:05 UTC · version 2.0.4

Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED

Instructions updated for brainerce-content-and-navigation

Full description — Now says: add a banner at the top, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must read before anything...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Brainerce and check future changes in Following.

Up to 10 plugins free · no card required.

All fields and original values.

Full description

Before

Sep 30, 2026 · 23:07 UTC

put a banner across the top, how do I change my menu, where does my blog live, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must be built to read before anything shows up. Not...

After

Oct 24, 2026 · 18:05 UTC

add a banner at the top, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must read before anything shows up. Also owns the contact form. Content, blog and contact-form tools are ...

Skill instructions

Before

Sep 30, 2026 · 23:07 UTC

"The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About ...

After

Oct 24, 2026 · 18:05 UTC

'The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About ...

Supporting files

Before

Sep 30, 2026 · 23:07 UTC

[{"relative_path":"agents/openai.yaml","size_in_bytes":983},{"relative_path":"assets/icon.png","size_in_bytes":3208},{"relative_path":"references/content-shapes.md","size_in_bytes":3496}]

After

Oct 24, 2026 · 18:05 UTC

[{"relative_path":"agents/openai.yaml","size_in_bytes":983},{"relative_path":"assets/icon.png","size_in_bytes":3208},{"relative_path":"references/content-shapes.md","size_in_bytes":3490}]

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -1,13 +1,15 @@
 ---
 name: brainerce-content-and-navigation
-description: "The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I put a banner across the top, how do I change my menu, where does my blog live, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must be built to read before anything shows up. Nothing here is reachable from this connector, so it gives exact dashboard routes instead of pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, banner, blog, articles, SEO, meta description, Google, sitemap."
+description: 'The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I add a banner at the top, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must read before anything shows up. Also owns the contact form. Content, blog and contact-form tools are OAuth-only and absent from the ChatGPT app, and navigation has no tool at all, so it gives exact dashboard routes rather than pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, blog, contact form, SEO, meta description, sitemap.'
 compatibility: ChatGPT, Claude Code, Claude Desktop, Cursor
 maintainer: Brainerce
 metadata:
   author: Brainerce
-  version: "1.0.0"
+  version: '1.0.0'
 ---
 
+⛔ **Before you call anything a dashboard task, look for `search_tools` in your tool list.** Some connections carry a small curated list PLUS a way to reach everything else. Where `search_tools` exists, search for what the merchant asked for and call any hit through the `call_read_tool` / `call_write_tool` / `call_destructive_tool` it names. The dashboard is the honest answer only when your list has no `search_tools`, or the search comes back empty. A few things are refused through it deliberately (payment provider setup, refunds and recording payments, gift cards), which is why an empty result there is a real answer rather than a gap.
+
 Get the non-product words onto a storefront, and be exact about what the platform does and does not do for you.
 
 ## Core principle
@@ -16,7 +18,13 @@
 
 That distinction is the answer to most questions here, so lead with it rather than burying it.
 
-⛔ **None of this is reachable from this connector.** There is no content tool, no page tool, no blog tool and no navigation tool on the Brainerce ChatGPT surface. Give the dashboard route, and never report a content change as done.
+⛔ **Check your tool list before you say this cannot be done, because the answer differs by connection.**
+
+- **On the ChatGPT app**, which carries a curated list, none of it is reachable. There is no content tool, no page tool and no blog tool on it. Give the dashboard route and never report a content change as done.
+- **On the full connector**, content and blog tools do exist: `list_content`, `get_content`, `create_content`, `update_content`, `publish_content`, `unpublish_content` and `delete_content` for the six content types, and `list_blog_posts`, `get_blog_post`, `create_blog_post`, `update_blog_post`, `publish_blog_post`, `unpublish_blog_post` and `delete_blog_post` for the blog.
+- ⛔ **Every one of those is OAuth-only.** A merchant connected with a `brainerce_` API key gets "This tool requires OAuth authentication and is not available via API key" from all of them, and no amount of retrying changes it. On an API-key connection the dashboard route below is the whole answer.
+
+There is still **no navigation tool of any kind**, on any connection. A menu is the category tree plus a Header content entry, and that holds everywhere.
 
 ## When to use this skill first
 
@@ -43,14 +51,14 @@
 
 The dashboard's **Content** section holds reusable pieces. Edit once, and every storefront reading that entry updates. Six kinds:
 
-| Type | What it is for |
-|---|---|
-| **FAQ** | A list of question and answer pairs |
-| **Footer** | Footer columns, links, copyright, social links |
-| **Header** | Logo, navigation links, and a call to action |
+| Type             | What it is for                                                    |
+| ---------------- | ----------------------------------------------------------------- |
+| **FAQ**          | A list of question and answer pairs                               |
+| **Footer**       | Footer columns, links, copyright, social links                    |
+| **Header**       | Logo, navigation links, and a call to action                      |
 | **Announcement** | The bar across the top: sales, shipping cut-offs, holiday notices |
-| **Rich text** | A block of formatted copy a storefront can drop anywhere |
-| **Page** | A full static page: About, Shipping Policy, Terms |
+| **Rich text**    | A block of formatted copy a storefront can drop anywhere          |
+| **Page**         | A full static page: About, Shipping Policy, Terms                 |
 
 Create with **New content**, pick the type, write it. Every entry is **Draft** or **Published**, and only published entries reach a storefront.
 
@@ -76,6 +84,18 @@
 
 So "add Contact to my menu" is a Header entry edit, and "add Laptops to my menu" is a category. Ask which kind of link it is before answering.
 
+**The seeded menu follows the store's language.** A new store's Header, Footer and FAQ are seeded in its language (ten languages have copy, any other is seeded in English), and changing the store's language rewrites those three entries too, but only while they are still the untouched seed. A merchant who sees an English menu on a Hebrew store most likely has a store from before that behaviour: the fix is the Header entry (Sell → Content → Header, plus Footer and FAQ), not the storefront code. `update_content` does it when an admin connector is attached.
+
+## The contact form
+
+The storefront's `/contact` page renders a contact form by its key, and every store has a default `main` form (name, email, phone, subject, message). On the full connector `list_contact_forms` and `get_contact_form` read them, `create_contact_form` adds a second one ("wholesale", "returns"), `update_contact_form` changes its wording, success text, active flag or which sales channels may use it, and `add_contact_form_field`, `update_contact_form_field` and `remove_contact_form_field` shape the fields (SELECT and MULTI_SELECT need `enumValues`; `email` and `message` cannot be made optional; the five built-in fields can be relabelled or hidden but not removed). `seed_default_contact_form` is the "reset to defaults" when a merchant's contact page shows no form. `delete_contact_form` is permanent and keeps the inquiries already sent through it.
+
+Two things to say every time: a new form is data, so it does nothing until the storefront asks for it by key, and the messages shoppers send arrive as inquiries, which `brainerce-order-handling` covers (`list_inquiries`, `reply_to_inquiry`). Contact-form tools need a signed-in (OAuth) session and none of them are on the ChatGPT app.
+
+## Transactional emails
+
+The order confirmation, shipped and cancellation emails are the other words on a store that are not product copy. They are templates, editable per event and per language on the full connector, and the sending domain the store uses is configured the same way; `brainerce-store-architecture` covers both under "Email sending and domains". None of it is on the ChatGPT app; there it is Settings, then Email.
+
 ## Static pages
 
 A **Page** entry carries a slug in lower-kebab form, a title, the body, and its own SEO block: title, description and social image. That is what an About page, a Shipping Policy or a Terms page is.
@@ -103,16 +123,16 @@
 
 Every post carries:
 
-| Field | What it controls |
-|---|---|
-| **Slug** | The address, `/blog/summer-care-guide`. Auto-derived from the title, editable |
-| **SEO title** | The headline in search results; falls back to the post title |
-| **SEO description** | The snippet under it; 150 to 160 characters works |
-| **OG image** | The image shown when shared; falls back to the cover image |
+| Field               | What it controls                                                              |
+| ------------------- | ----------------------------------------------------------------------------- |
+| **Slug**            | The address, `/blog/summer-care-guide`. Auto-derived from the title, editable |
+| **SEO title**       | The headline in search results; falls back to the post title                  |
+| **SEO description** | The snippet under it; 150 to 160 characters works                             |
+| **OG image**        | The image shown when shared; falls back to the cover image                    |
 
-Static Pages carry the same three SEO fields.
+Static Pages carry the same three SEO fields, but NOT the redirect below: `resolveSlugRedirect` covers products and blog posts only, never Pages.
 
-**Renaming a slug is safe.** The old address redirects with a 301 to the new one, so the ranking it earned is not lost. Merchants hesitate over this; tell them it is fine.
+**Renaming a product or blog post slug is safe, but only if the storefront calls for it.** The platform records the rename; the redirect itself only happens when the storefront calls `client.resolveSlugRedirect('product' | 'blog', slug)` on a 404 and does a `permanentRedirect()` to the id it returns. That call is sales-channel (`vc_`) mode only, so a storeId-connected storefront gets no redirect at all, and it never applies to a Page slug. Tell merchants it is fine on a vc\_ storefront that implements the check; otherwise the old address just 404s.
 
 Published posts go into the sitemap on their own, and Brainerce pings search engines the moment a post goes live, so nothing needs submitting by hand.
 
@@ -120,7 +140,7 @@
 
 ### What a Brainerce storefront does by itself
 
-A storefront built from the current template, or built by following the integration guide, ships with a sitemap covering products, categories, posts and pages; schema.org structured data on products so prices and star ratings can appear in results; instant indexing so a new post is crawled in minutes; and automatic 301 redirects when a slug is renamed.
+A storefront built from the current template, or built by following the integration guide, ships with a sitemap covering products, categories, posts and pages; schema.org structured data on products so prices and star ratings can appear in results; instant indexing so a new post is crawled in minutes; and 301 redirects when a product or blog post slug is renamed, on a sales-channel (`vc_`) connection (never on Pages, and not on a storeId-connected storefront).
 
 One caveat that applies to all four: **they live in the storefront, not the platform.** A site built before those features existed, or built by hand without the guide, may be missing some. If in doubt, that is a question for whoever built the storefront.
 
@@ -135,12 +155,18 @@
 ### The three things only the merchant can do
 
 1. **Write the homepage meta description.** In **Settings**, the **Homepage SEO** card. Fifty to 160 characters saying what the shop sells and for whom. Without it Google picks text off the page at random. There is a Create with AI button.
-2. **Verify the domain in Google Search Console.** Add the domain in Search Console, choose the HTML tag method, copy the tag. In Brainerce go to **Apps, then Google and YouTube**, pick the sales channel, open the **Merchant Center** tab, and paste it into **Google site verification**. ⛔ It is NOT in the sales-channel settings, which is where everyone looks first. The storefront renders the tag within a few minutes, then click Verify.
+2. **Verify the domain in Google Search Console.** Add the domain in Search Console, choose the HTML tag method, copy the tag. In Brainerce go to **Apps, then Google**, pick the sales channel, open the **Merchant Center** tab, and paste it into **Google site verification**. ⛔ It is NOT in the sales-channel settings, which is where everyone looks first. The storefront renders the tag within a few minutes, then click Verify.
 3. **Give every product a slug and a meta description.** Both live on the product. The **SEO column** on the Products page scores each one and offers one-click fixes, including AI-written descriptions and image alt text.
 
 ### SEO Autopilot
 
-⛔ **Not switched on yet.** A store-wide SEO audit with a ranked issue list is documented ahead of release, and merchants sometimes ask for it by name. If it is not in the sidebar, nothing is broken. What exists today is the per-product SEO score in the products table, which is a different and smaller thing.
+**SEO Autopilot writes blog posts for the store on a cadence** (keyword planning → AI article →
+publish → IndexNow ping). It is off on a new store, its dashboard page is in rollout to platform
+super-admins only, and even once a merchant turns it on the default mode is REVIEW, which files
+each article as a draft for the merchant to approve. Only AUTOPILOT mode publishes without a
+human. If it is not in the sidebar, nothing is broken; that is the rollout gate, not a missing
+feature. Separately, and always available, is the per-product SEO score in the products table,
+which is a smaller, on-demand thing.
 
 ## Response shape
 
@@ -154,12 +180,13 @@
 
 ## Rules
 
-- Never report a content, page, blog or navigation change as done. There is no tool for any of it here.
+- Never report a content, page or blog change as done unless a content tool is actually in your tool list and the call returned. On the ChatGPT connector, and on any API-key connection, there is no such tool and the answer is a dashboard route.
+- Navigation has no tool anywhere. Do not imply otherwise even on the full connector.
 - Lead with "this is data, your storefront renders it" whenever a merchant reports that something does not appear.
 - Recommend Unpublish, not Delete. Deletion is permanent and storefronts fall back to nothing.
 - Do not invent a navigation builder. It is the category tree plus a Header entry.
 - Give the exact dashboard route, including the tab. The Search Console tag in particular is somewhere nobody guesses.
-- Write the negative space. If a merchant asks for something Brainerce does not do, ads or ranking guarantees or SEO Autopilot today, say so rather than answering with generic advice that reads like a yes.
+- Write the negative space. If a merchant asks for something Brainerce does not do (ads, ranking guarantees) or for SEO Autopilot before it is rolled out to their store, say so rather than answering with generic advice that reads like a yes.
 - Tell developers that page, rich text and FAQ HTML is unsanitized, before they render it.
 
 ## Reference files in this skill
@@ -170,6 +197,8 @@
 
 - The category tree that is half the menu: `brainerce-store-architecture`.
 - Structured data attached to products: `brainerce-custom-fields`.
+- Answering the messages the contact form brings in: `brainerce-order-handling`.
+- Email templates and the sending domain: `brainerce-store-architecture`.
 - Per-product SEO while adding a product: `brainerce-product-onboarding`.
 - The SDK calls that fetch content and posts: `brainerce-sdk`.
 - Routing and rendering it in a storefront, including sanitisation: `brainerce-storefront-build`.
Full technical diff · 3 changed fields

changed /description

BEFORE
"The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I put a banner across the top, how do I change my menu, where does my blog live, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must be built to read before anything shows up. Nothing here is reachable from this connector, so it gives exact dashboard routes instead of pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, banner, blog, articles, SEO, meta description, Google, sitemap."
AFTER
"The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I add a banner at the top, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must read before anything shows up. Also owns the contact form. Content, blog and contact-form tools are OAuth-only and absent from the ChatGPT app, and navigation has no tool at all, so it gives exact dashboard routes rather than pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, blog, contact form, SEO, meta description, sitemap."

changed /included_files

BEFORE
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 983
  },
  {
    "relative_path": "assets/icon.png",
    "size_in_bytes": 3208
  },
  {
    "relative_path": "references/content-shapes.md",
    "size_in_bytes": 3496
  }
]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 983
  },
  {
    "relative_path": "assets/icon.png",
    "size_in_bytes": 3208
  },
  {
    "relative_path": "references/content-shapes.md",
    "size_in_bytes": 3490
  }
]

changed /skill_md_contents

BEFORE
"---\nname: brainerce-content-and-navigation\ndescription: \"The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I put a banner across the top, how do I change my menu, where does my blog live, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must be built to read before anything shows up. Nothing here is reachable from this connector, so it gives exact dashboard routes instead of pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, banner, blog, articles, SEO, meta description, Google, sitemap.\"\ncompatibility: ChatGPT, Claude Code, Claude Desktop, Cursor\nmaintainer: Brainerce\nmetadata:\n  author: Brainerce\n  version: \"1.0.0\"\n---\n\nGet the non-product words onto a storefront, and be exact about what the platform does and does not do for you.\n\n## Core principle\n\nEverything in this skill is **data, not a rendered page**. Brainerce stores the words and exposes them through the SDK; the storefront decides where they appear. A merchant who writes an FAQ and sees nothing on their site does not have a broken FAQ, they have a storefront that is not asking for it yet.\n\nThat distinction is the answer to most questions here, so lead with it rather than burying it.\n\n⛔ **None of this is reachable from this connector.** There is no content tool, no page tool, no blog tool and no navigation tool on the Brainerce ChatGPT surface. Give the dashboard route, and never report a content change as done.\n\n## When to use this skill first\n\n- \"Where do I write my About page / shipping policy / terms\".\n- \"Can I put a banner across the top of my site\".\n- \"How do I change my menu\", \"how do I add a link to the header\".\n- \"Where does my blog live\", \"how do I publish an article\".\n- \"How do I get found on Google\", \"where is my meta description\".\n- A developer wiring pages, footers or announcements into a storefront.\n\n## When NOT to use this skill first\n\n- Products, categories, tags, variants: `brainerce-store-architecture`.\n- Product specs and structured data on products: `brainerce-custom-fields`.\n- Per-product SEO slug and meta description while adding a product: `brainerce-product-onboarding`.\n- The SDK calls that fetch any of this: `brainerce-sdk`.\n- Building the storefront that renders it: `brainerce-storefront-build`.\n\n---\n\n## The two places words live\n\n### Content\n\nThe dashboard's **Content** section holds reusable pieces. Edit once, and every storefront reading that entry updates. Six kinds:\n\n| Type | What it is for |\n|---|---|\n| **FAQ** | A list of question and answer pairs |\n| **Footer** | Footer columns, links, copyright, social links |\n| **Header** | Logo, navigation links, and a call to action |\n| **Announcement** | The bar across the top: sales, shipping cut-offs, holiday notices |\n| **Rich text** | A block of formatted copy a storefront can drop anywhere |\n| **Page** | A full static page: About, Shipping Policy, Terms |\n\nCreate with **New content**, pick the type, write it. Every entry is **Draft** or **Published**, and only published entries reach a storefront.\n\n### Blog\n\n**Blog** publishes articles. **New post**, write, publish. Brainerce stores the article and exposes it; the layout belongs to the storefront.\n\n### Which one\n\n- Part of the furniture of the site, so footer, header, announcement bar, FAQ block: **Content**.\n- An article with a date: **Blog**.\n- A description of something you sell: neither, that is a product.\n\n## Navigation, precisely\n\n**There is no visual navigation builder in Brainerce.** Merchants ask for one, so say what there is instead of implying a page they will go looking for.\n\nA storefront menu comes from two sources, and they do different jobs:\n\n1. **The category tree.** Parent and child categories are the browsable structure: \"Mobile\" with \"iPhone\" and \"Samsung\" under it. Each category has its own landing page and a breadcrumb on every product in it. A storefront fetches the tree and renders it. This is where the shape of the menu is decided, and it is a catalog decision, so `brainerce-store-architecture` owns it.\n\n2. **A Header content entry.** The `HEADER` type carries an optional logo, a list of navigation items as label plus URL pairs, and an optional call to action. This is where links that are not categories go: About, Contact, the blog, a landing page.\n\nSo \"add Contact to my menu\" is a Header entry edit, and \"add Laptops to my menu\" is a category. Ask which kind of link it is before answering.\n\n## Static pages\n\nA **Page** entry carries a slug in lower-kebab form, a title, the body, and its own SEO block: title, description and social image. That is what an About page, a Shipping Policy or a Terms page is.\n\nThe storefront still has to route it. A Page entry is not automatically live at `/about`; the storefront reads the entry and decides. If a merchant has published a page and cannot reach it, that is a storefront routing gap, not a content problem.\n\n⛔ **Merchant-authored HTML is not sanitized by the server**, deliberately, because some merchants embed things a strict sanitizer would strip. Rich text bodies, page bodies and FAQ answers all arrive raw. A storefront rendering them must sanitize before injecting, and this is worth saying to a developer unprompted.\n\n## Announcements\n\nThe `ANNOUNCEMENT` type carries the message, a severity of info, warning or success, whether it can be dismissed, an optional start and end time, and an optional call to action.\n\nTwo things to tell a merchant:\n\n- The **start and end times are filtered by the storefront**, not enforced by the server. A storefront that ignores them shows the banner forever.\n- **Unpublish rather than delete** when a sale ends. See the next section for why.\n\n## ⛔ Deleting is permanent, and storefronts fall back to nothing\n\nDelete a content entry and it is gone. A storefront that expected it renders whatever it was built to show when there is nothing, which is usually nothing at all. Deleting a blog post is permanent too.\n\nThe reversible move is **Unpublish**. Recommend it every time a merchant says \"take this down\", and only mention delete if they say they want it gone for good.\n\n## Blog SEO, and what happens automatically\n\nEvery post carries:\n\n| Field | What it controls |\n|---|---|\n| **Slug** | The address, `/blog/summer-care-guide`. Auto-derived from the title, editable |\n| **SEO title** | The headline in search results; falls back to the post title |\n| **SEO description** | The snippet under it; 150 to 160 characters works |\n| **OG image** | The image shown when shared; falls back to the cover image |\n\nStatic Pages carry the same three SEO fields.\n\n**Renaming a slug is safe.** The old address redirects with a 301 to the new one, so the ranking it earned is not lost. Merchants hesitate over this; tell them it is fine.\n\nPublished posts go into the sitemap on their own, and Brainerce pings search engines the moment a post goes live, so nothing needs submitting by hand.\n\n## Getting found on Google\n\n### What a Brainerce storefront does by itself\n\nA storefront built from the current template, or built by following the integration guide, ships with a sitemap covering products, categories, posts and pages; schema.org structured data on products so prices and star ratings can appear in results; instant indexing so a new post is crawled in minutes; and automatic 301 redirects when a slug is renamed.\n\nOne caveat that applies to all four: **they live in the storefront, not the platform.** A site built before those features existed, or built by hand without the guide, may be missing some. If in doubt, that is a question for whoever built the storefront.\n\n### What Brainerce does not do\n\nSay these plainly, because merchants assume otherwise:\n\n- Brainerce does **not** run ads. Everything here is organic search.\n- Brainerce does **not** guarantee a ranking, and nobody can.\n- Brainerce does **not** submit the site to Google. Verifying the domain is the owner's job.\n\n### The three things only the merchant can do\n\n1. **Write the homepage meta description.** In **Settings**, the **Homepage SEO** card. Fifty to 160 characters saying what the shop sells and for whom. Without it Google picks text off the page at random. There is a Create with AI button.\n2. **Verify the domain in Google Search Console.** Add the domain in Search Console, choose the HTML tag method, copy the tag. In Brainerce go to **Apps, then Google and YouTube**, pick the sales channel, open the **Merchant Center** tab, and paste it into **Google site verification**. ⛔ It is NOT in the sales-channel settings, which is where everyone looks first. The storefront renders the tag within a few minutes, then click Verify.\n3. **Give every product a slug and a meta description.** Both live on the product. The **SEO column** on the Products page scores each one and offers one-click fixes, including AI-written descriptions and image alt text.\n\n### SEO Autopilot\n\n⛔ **Not switched on yet.** A store-wide SEO audit with a ranked issue list is documented ahead of release, and merchants sometimes ask for it by name. If it is not in the sidebar, nothing is broken. What exists today is the per-product SEO score in the products table, which is a different and smaller thing.\n\n## Response shape\n\n> Your About page goes in **Content**, as a Page entry. New content, pick Page, give it the slug `about`, write the body, and fill in the SEO title and description while you are there.\n>\n> Two things to know. It saves as a Draft, so publish it or nothing sees it. And a Page entry is data: your storefront has to be built to fetch and route it, so if `/about` still 404s after publishing, that is a change on the storefront side rather than something to fix here.\n>\n> To get it into the menu, add it as a link in your **Header** content entry.\n>\n> I cannot do any of that from this conversation, so those are steps for you in the dashboard.\n\n## Rules\n\n- Never report a content, page, blog or navigation change as done. There is no tool for any of it here.\n- Lead with \"this is data, your storefront renders it\" whenever a merchant reports that something does not appear.\n- Recommend Unpublish, not Delete. Deletion is permanent and storefronts fall back to nothing.\n- Do not invent a navigation builder. It is the category tree plus a Header entry.\n- Give the exact dashboard route, including the tab. The Search Console tag in particular is somewhere nobody guesses.\n- Write the negative space. If a merchant asks for something Brainerce does not do, ads or ranking guarantees or SEO Autopilot today, say so rather than answering with generic advice that reads like a yes.\n- Tell developers that page, rich text and FAQ HTML is unsanitized, before they render it.\n\n## Reference files in this skill\n\n- `references/content-shapes.md`: the payload shape of each of the six content types, the sanitisation rule, and how a menu is assembled from the category tree plus the header entry. For developers.\n\n## Cross-skill connections\n\n- The category tree that is half the menu: `brainerce-store-architecture`.\n- Structured data attached to products: `brainerce-custom-fields`.\n- Per-product SEO while adding a product: `brainerce-product-onboarding`.\n- The SDK calls that fetch content and posts: `brainerce-sdk`.\n- Routing and rendering it in a storefront, including sanitisation: `brainerce-storefront-build`.\n\nRoute once, and do not bounce back and forth.\n"
AFTER
"---\nname: brainerce-content-and-navigation\ndescription: 'The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I add a banner at the top, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must read before anything shows up. Also owns the contact form. Content, blog and contact-form tools are OAuth-only and absent from the ChatGPT app, and navigation has no tool at all, so it gives exact dashboard routes rather than pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, blog, contact form, SEO, meta description, sitemap.'\ncompatibility: ChatGPT, Claude Code, Claude Desktop, Cursor\nmaintainer: Brainerce\nmetadata:\n  author: Brainerce\n  version: '1.0.0'\n---\n\n⛔ **Before you call anything a dashboard task, look for `search_tools` in your tool list.** Some connections carry a small curated list PLUS a way to reach everything else. Where `search_tools` exists, search for what the merchant asked for and call any hit through the `call_read_tool` / `call_write_tool` / `call_destructive_tool` it names. The dashboard is the honest answer only when your list has no `search_tools`, or the search comes back empty. A few things are refused through it deliberately (payment provider setup, refunds and recording payments, gift cards), which is why an empty result there is a real answer rather than a gap.\n\nGet the non-product words onto a storefront, and be exact about what the platform does and does not do for you.\n\n## Core principle\n\nEverything in this skill is **data, not a rendered page**. Brainerce stores the words and exposes them through the SDK; the storefront decides where they appear. A merchant who writes an FAQ and sees nothing on their site does not have a broken FAQ, they have a storefront that is not asking for it yet.\n\nThat distinction is the answer to most questions here, so lead with it rather than burying it.\n\n⛔ **Check your tool list before you say this cannot be done, because the answer differs by connection.**\n\n- **On the ChatGPT app**, which carries a curated list, none of it is reachable. There is no content tool, no page tool and no blog tool on it. Give the dashboard route and never report a content change as done.\n- **On the full connector**, content and blog tools do exist: `list_content`, `get_content`, `create_content`, `update_content`, `publish_content`, `unpublish_content` and `delete_content` for the six content types, and `list_blog_posts`, `get_blog_post`, `create_blog_post`, `update_blog_post`, `publish_blog_post`, `unpublish_blog_post` and `delete_blog_post` for the blog.\n- ⛔ **Every one of those is OAuth-only.** A merchant connected with a `brainerce_` API key gets \"This tool requires OAuth authentication and is not available via API key\" from all of them, and no amount of retrying changes it. On an API-key connection the dashboard route below is the whole answer.\n\nThere is still **no navigation tool of any kind**, on any connection. A menu is the category tree plus a Header content entry, and that holds everywhere.\n\n## When to use this skill first\n\n- \"Where do I write my About page / shipping policy / terms\".\n- \"Can I put a banner across the top of my site\".\n- \"How do I change my menu\", \"how do I add a link to the header\".\n- \"Where does my blog live\", \"how do I publish an article\".\n- \"How do I get found on Google\", \"where is my meta description\".\n- A developer wiring pages, footers or announcements into a storefront.\n\n## When NOT to use this skill first\n\n- Products, categories, tags, variants: `brainerce-store-architecture`.\n- Product specs and structured data on products: `brainerce-custom-fields`.\n- Per-product SEO slug and meta description while adding a product: `brainerce-product-onboarding`.\n- The SDK calls that fetch any of this: `brainerce-sdk`.\n- Building the storefront that renders it: `brainerce-storefront-build`.\n\n---\n\n## The two places words live\n\n### Content\n\nThe dashboard's **Content** section holds reusable pieces. Edit once, and every storefront reading that entry updates. Six kinds:\n\n| Type             | What it is for                                                    |\n| ---------------- | ----------------------------------------------------------------- |\n| **FAQ**          | A list of question and answer pairs                               |\n| **Footer**       | Footer columns, links, copyright, social links                    |\n| **Header**       | Logo, navigation links, and a call to action                      |\n| **Announcement** | The bar across the top: sales, shipping cut-offs, holiday notices |\n| **Rich text**    | A block of formatted copy a storefront can drop anywhere          |\n| **Page**         | A full static page: About, Shipping Policy, Terms                 |\n\nCreate with **New content**, pick the type, write it. Every entry is **Draft** or **Published**, and only published entries reach a storefront.\n\n### Blog\n\n**Blog** publishes articles. **New post**, write, publish. Brainerce stores the article and exposes it; the layout belongs to the storefront.\n\n### Which one\n\n- Part of the furniture of the site, so footer, header, announcement bar, FAQ block: **Content**.\n- An article with a date: **Blog**.\n- A description of something you sell: neither, that is a product.\n\n## Navigation, precisely\n\n**There is no visual navigation builder in Brainerce.** Merchants ask for one, so say what there is instead of implying a page they will go looking for.\n\nA storefront menu comes from two sources, and they do different jobs:\n\n1. **The category tree.** Parent and child categories are the browsable structure: \"Mobile\" with \"iPhone\" and \"Samsung\" under it. Each category has its own landing page and a breadcrumb on every product in it. A storefront fetches the tree and renders it. This is where the shape of the menu is decided, and it is a catalog decision, so `brainerce-store-architecture` owns it.\n\n2. **A Header content entry.** The `HEADER` type carries an optional logo, a list of navigation items as label plus URL pairs, and an optional call to action. This is where links that are not categories go: About, Contact, the blog, a landing page.\n\nSo \"add Contact to my menu\" is a Header entry edit, and \"add Laptops to my menu\" is a category. Ask which kind of link it is before answering.\n\n**The seeded menu follows the store's language.** A new store's Header, Footer and FAQ are seeded in its language (ten languages have copy, any other is seeded in English), and changing the store's language rewrites those three entries too, but only while they are still the untouched seed. A merchant who sees an English menu on a Hebrew store most likely has a store from before that behaviour: the fix is the Header entry (Sell → Content → Header, plus Footer and FAQ), not the storefront code. `update_content` does it when an admin connector is attached.\n\n## The contact form\n\nThe storefront's `/contact` page renders a contact form by its key, and every store has a default `main` form (name, email, phone, subject, message). On the full connector `list_contact_forms` and `get_contact_form` read them, `create_contact_form` adds a second one (\"wholesale\", \"returns\"), `update_contact_form` changes its wording, success text, active flag or which sales channels may use it, and `add_contact_form_field`, `update_contact_form_field` and `remove_contact_form_field` shape the fields (SELECT and MULTI_SELECT need `enumValues`; `email` and `message` cannot be made optional; the five built-in fields can be relabelled or hidden but not removed). `seed_default_contact_form` is the \"reset to defaults\" when a merchant's contact page shows no form. `delete_contact_form` is permanent and keeps the inquiries already sent through it.\n\nTwo things to say every time: a new form is data, so it does nothing until the storefront asks for it by key, and the messages shoppers send arrive as inquiries, which `brainerce-order-handling` covers (`list_inquiries`, `reply_to_inquiry`). Contact-form tools need a signed-in (OAuth) session and none of them are on the ChatGPT app.\n\n## Transactional emails\n\nThe order confirmation, shipped and cancellation emails are the other words on a store that are not product copy. They are templates, editable per event and per language on the full connector, and the sending domain the store uses is configured the same way; `brainerce-store-architecture` covers both under \"Email sending and domains\". None of it is on the ChatGPT app; there it is Settings, then Email.\n\n## Static pages\n\nA **Page** entry carries a slug in lower-kebab form, a title, the body, and its own SEO block: title, description and social image. That is what an About page, a Shipping Policy or a Terms page is.\n\nThe storefront still has to route it. A Page entry is not automatically live at `/about`; the storefront reads the entry and decides. If a merchant has published a page and cannot reach it, that is a storefront routing gap, not a content problem.\n\n⛔ **Merchant-authored HTML is not sanitized by the server**, deliberately, because some merchants embed things a strict sanitizer would strip. Rich text bodies, page bodies and FAQ answers all arrive raw. A storefront rendering them must sanitize before injecting, and this is worth saying to a developer unprompted.\n\n## Announcements\n\nThe `ANNOUNCEMENT` type carries the message, a severity of info, warning or success, whether it can be dismissed, an optional start and end time, and an optional call to action.\n\nTwo things to tell a merchant:\n\n- The **start and end times are filtered by the storefront**, not enforced by the server. A storefront that ignores them shows the banner forever.\n- **Unpublish rather than delete** when a sale ends. See the next section for why.\n\n## ⛔ Deleting is permanent, and storefronts fall back to nothing\n\nDelete a content entry and it is gone. A storefront that expected it renders whatever it was built to show when there is nothing, which is usually nothing at all. Deleting a blog post is permanent too.\n\nThe reversible move is **Unpublish**. Recommend it every time a merchant says \"take this down\", and only mention delete if they say they want it gone for good.\n\n## Blog SEO, and what happens automatically\n\nEvery post carries:\n\n| Field               | What it controls                                                              |\n| ------------------- | ----------------------------------------------------------------------------- |\n| **Slug**            | The address, `/blog/summer-care-guide`. Auto-derived from the title, editable |\n| **SEO title**       | The headline in search results; falls back to the post title                  |\n| **SEO description** | The snippet under it; 150 to 160 characters works                             |\n| **OG image**        | The image shown when shared; falls back to the cover image                    |\n\nStatic Pages carry the same three SEO fields, but NOT the redirect below: `resolveSlugRedirect` covers products and blog posts only, never Pages.\n\n**Renaming a product or blog post slug is safe, but only if the storefront calls for it.** The platform records the rename; the redirect itself only happens when the storefront calls `client.resolveSlugRedirect('product' | 'blog', slug)` on a 404 and does a `permanentRedirect()` to the id it returns. That call is sales-channel (`vc_`) mode only, so a storeId-connected storefront gets no redirect at all, and it never applies to a Page slug. Tell merchants it is fine on a vc\\_ storefront that implements the check; otherwise the old address just 404s.\n\nPublished posts go into the sitemap on their own, and Brainerce pings search engines the moment a post goes live, so nothing needs submitting by hand.\n\n## Getting found on Google\n\n### What a Brainerce storefront does by itself\n\nA storefront built from the current template, or built by following the integration guide, ships with a sitemap covering products, categories, posts and pages; schema.org structured data on products so prices and star ratings can appear in results; instant indexing so a new post is crawled in minutes; and 301 redirects when a product or blog post slug is renamed, on a sales-channel (`vc_`) connection (never on Pages, and not on a storeId-connected storefront).\n\nOne caveat that applies to all four: **they live in the storefront, not the platform.** A site built before those features existed, or built by hand without the guide, may be missing some. If in doubt, that is a question for whoever built the storefront.\n\n### What Brainerce does not do\n\nSay these plainly, because merchants assume otherwise:\n\n- Brainerce does **not** run ads. Everything here is organic search.\n- Brainerce does **not** guarantee a ranking, and nobody can.\n- Brainerce does **not** submit the site to Google. Verifying the domain is the owner's job.\n\n### The three things only the merchant can do\n\n1. **Write the homepage meta description.** In **Settings**, the **Homepage SEO** card. Fifty to 160 characters saying what the shop sells and for whom. Without it Google picks text off the page at random. There is a Create with AI button.\n2. **Verify the domain in Google Search Console.** Add the domain in Search Console, choose the HTML tag method, copy the tag. In Brainerce go to **Apps, then Google**, pick the sales channel, open the **Merchant Center** tab, and paste it into **Google site verification**. ⛔ It is NOT in the sales-channel settings, which is where everyone looks first. The storefront renders the tag within a few minutes, then click Verify.\n3. **Give every product a slug and a meta description.** Both live on the product. The **SEO column** on the Products page scores each one and offers one-click fixes, including AI-written descriptions and image alt text.\n\n### SEO Autopilot\n\n**SEO Autopilot writes blog posts for the store on a cadence** (keyword planning → AI article →\npublish → IndexNow ping). It is off on a new store, its dashboard page is in rollout to platform\nsuper-admins only, and even once a merchant turns it on the default mode is REVIEW, which files\neach article as a draft for the merchant to approve. Only AUTOPILOT mode publishes without a\nhuman. If it is not in the sidebar, nothing is broken; that is the rollout gate, not a missing\nfeature. Separately, and always available, is the per-product SEO score in the products table,\nwhich is a smaller, on-demand thing.\n\n## Response shape\n\n> Your About page goes in **Content**, as a Page entry. New content, pick Page, give it the slug `about`, write the body, and fill in the SEO title and description while you are there.\n>\n> Two things to know. It saves as a Draft, so publish it or nothing sees it. And a Page entry is data: your storefront has to be built to fetch and route it, so if `/about` still 404s after publishing, that is a change on the storefront side rather than something to fix here.\n>\n> To get it into the menu, add it as a link in your **Header** content entry.\n>\n> I cannot do any of that from this conversation, so those are steps for you in the dashboard.\n\n## Rules\n\n- Never report a content, page or blog change as done unless a content tool is actually in your tool list and the call returned. On the ChatGPT connector, and on any API-key connection, there is no such tool and the answer is a dashboard route.\n- Navigation has no tool anywhere. Do not imply otherwise even on the full connector.\n- Lead with \"this is data, your storefront renders it\" whenever a merchant reports that something does not appear.\n- Recommend Unpublish, not Delete. Deletion is permanent and storefronts fall back to nothing.\n- Do not invent a navigation builder. It is the category tree plus a Header entry.\n- Give the exact dashboard route, including the tab. The Search Console tag in particular is somewhere nobody guesses.\n- Write the negative space. If a merchant asks for something Brainerce does not do (ads, ranking guarantees) or for SEO Autopilot before it is rolled out to their store, say so rather than answering with generic advice that reads like a yes.\n- Tell developers that page, rich text and FAQ HTML is unsanitized, before they render it.\n\n## Reference files in this skill\n\n- `references/content-shapes.md`: the payload shape of each of the six content types, the sanitisation rule, and how a menu is assembled from the category tree plus the header entry. For developers.\n\n## Cross-skill connections\n\n- The category tree that is half the menu: `brainerce-store-architecture`.\n- Structured data attached to products: `brainerce-custom-fields`.\n- Answering the messages the contact form brings in: `brainerce-order-handling`.\n- Email templates and the sending domain: `brainerce-store-architecture`.\n- Per-product SEO while adding a product: `brainerce-product-onboarding`.\n- The SDK calls that fetch content and posts: `brainerce-sdk`.\n- Routing and rendering it in a storefront, including sanitisation: `brainerce-storefront-build`.\n\nRoute once, and do not bounce back and forth.\n"
Full snapshot data
{
  "description": "The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I add a banner at the top, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must read before anything shows up. Also owns the contact form. Content, blog and contact-form tools are OAuth-only and absent from the ChatGPT app, and navigation has no tool at all, so it gives exact dashboard routes rather than pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, blog, contact form, SEO, meta description, sitemap.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 983
    },
    {
      "relative_path": "assets/icon.png",
      "size_in_bytes": 3208
    },
    {
      "relative_path": "references/content-shapes.md",
      "size_in_bytes": 3490
    }
  ],
  "name": "brainerce-content-and-navigation",
  "skill_md_contents": "---\nname: brainerce-content-and-navigation\ndescription: 'The words on a Brainerce storefront that are not product copy: static pages, FAQs, footers, the header and its navigation links, announcement bars, the blog, and the SEO around them. Use when the merchant asks where do I write my About page, how do I add a shipping policy, can I add a banner at the top, or how do I get found on Google. Says which pieces exist, where each is configured, and which a storefront must read before anything shows up. Also owns the contact form. Content, blog and contact-form tools are OAuth-only and absent from the ChatGPT app, and navigation has no tool at all, so it gives exact dashboard routes rather than pretending. For store owners and for developers wiring content in. Do not choose this for products, categories or tags, use brainerce-store-architecture. Do not choose this for product specs, use brainerce-custom-fields. Keywords: pages, about page, policy page, terms, FAQ, footer, header, navigation, menu, announcement bar, blog, contact form, SEO, meta description, sitemap.'\ncompatibility: ChatGPT, Claude Code, Claude Desktop, Cursor\nmaintainer: Brainerce\nmetadata:\n  author: Brainerce\n  version: '1.0.0'\n---\n\n⛔ **Before you call anything a dashboard task, look for `search_tools` in your tool list.** Some connections carry a small curated list PLUS a way to reach everything else. Where `search_tools` exists, search for what the merchant asked for and call any hit through the `call_read_tool` / `call_write_tool` / `call_destructive_tool` it names. The dashboard is the honest answer only when your list has no `search_tools`, or the search comes back empty. A few things are refused through it deliberately (payment provider setup, refunds and recording payments, gift cards), which is why an empty result there is a real answer rather than a gap.\n\nGet the non-product words onto a storefront, and be exact about what the platform does and does not do for you.\n\n## Core principle\n\nEverything in this skill is **data, not a rendered page**. Brainerce stores the words and exposes them through the SDK; the storefront decides where they appear. A merchant who writes an FAQ and sees nothing on their site does not have a broken FAQ, they have a storefront that is not asking for it yet.\n\nThat distinction is the answer to most questions here, so lead with it rather than burying it.\n\n⛔ **Check your tool list before you say this cannot be done, because the answer differs by connection.**\n\n- **On the ChatGPT app**, which carries a curated list, none of it is reachable. There is no content tool, no page tool and no blog tool on it. Give the dashboard route and never report a content change as done.\n- **On the full connector**, content and blog tools do exist: `list_content`, `get_content`, `create_content`, `update_content`, `publish_content`, `unpublish_content` and `delete_content` for the six content types, and `list_blog_posts`, `get_blog_post`, `create_blog_post`, `update_blog_post`, `publish_blog_post`, `unpublish_blog_post` and `delete_blog_post` for the blog.\n- ⛔ **Every one of those is OAuth-only.** A merchant connected with a `brainerce_` API key gets \"This tool requires OAuth authentication and is not available via API key\" from all of them, and no amount of retrying changes it. On an API-key connection the dashboard route below is the whole answer.\n\nThere is still **no navigation tool of any kind**, on any connection. A menu is the category tree plus a Header content entry, and that holds everywhere.\n\n## When to use this skill first\n\n- \"Where do I write my About page / shipping policy / terms\".\n- \"Can I put a banner across the top of my site\".\n- \"How do I change my menu\", \"how do I add a link to the header\".\n- \"Where does my blog live\", \"how do I publish an article\".\n- \"How do I get found on Google\", \"where is my meta description\".\n- A developer wiring pages, footers or announcements into a storefront.\n\n## When NOT to use this skill first\n\n- Products, categories, tags, variants: `brainerce-store-architecture`.\n- Product specs and structured data on products: `brainerce-custom-fields`.\n- Per-product SEO slug and meta description while adding a product: `brainerce-product-onboarding`.\n- The SDK calls that fetch any of this: `brainerce-sdk`.\n- Building the storefront that renders it: `brainerce-storefront-build`.\n\n---\n\n## The two places words live\n\n### Content\n\nThe dashboard's **Content** section holds reusable pieces. Edit once, and every storefront reading that entry updates. Six kinds:\n\n| Type             | What it is for                                                    |\n| ---------------- | ----------------------------------------------------------------- |\n| **FAQ**          | A list of question and answer pairs                               |\n| **Footer**       | Footer columns, links, copyright, social links                    |\n| **Header**       | Logo, navigation links, and a call to action                      |\n| **Announcement** | The bar across the top: sales, shipping cut-offs, holiday notices |\n| **Rich text**    | A block of formatted copy a storefront can drop anywhere          |\n| **Page**         | A full static page: About, Shipping Policy, Terms                 |\n\nCreate with **New content**, pick the type, write it. Every entry is **Draft** or **Published**, and only published entries reach a storefront.\n\n### Blog\n\n**Blog** publishes articles. **New post**, write, publish. Brainerce stores the article and exposes it; the layout belongs to the storefront.\n\n### Which one\n\n- Part of the furniture of the site, so footer, header, announcement bar, FAQ block: **Content**.\n- An article with a date: **Blog**.\n- A description of something you sell: neither, that is a product.\n\n## Navigation, precisely\n\n**There is no visual navigation builder in Brainerce.** Merchants ask for one, so say what there is instead of implying a page they will go looking for.\n\nA storefront menu comes from two sources, and they do different jobs:\n\n1. **The category tree.** Parent and child categories are the browsable structure: \"Mobile\" with \"iPhone\" and \"Samsung\" under it. Each category has its own landing page and a breadcrumb on every product in it. A storefront fetches the tree and renders it. This is where the shape of the menu is decided, and it is a catalog decision, so `brainerce-store-architecture` owns it.\n\n2. **A Header content entry.** The `HEADER` type carries an optional logo, a list of navigation items as label plus URL pairs, and an optional call to action. This is where links that are not categories go: About, Contact, the blog, a landing page.\n\nSo \"add Contact to my menu\" is a Header entry edit, and \"add Laptops to my menu\" is a category. Ask which kind of link it is before answering.\n\n**The seeded menu follows the store's language.** A new store's Header, Footer and FAQ are seeded in its language (ten languages have copy, any other is seeded in English), and changing the store's language rewrites those three entries too, but only while they are still the untouched seed. A merchant who sees an English menu on a Hebrew store most likely has a store from before that behaviour: the fix is the Header entry (Sell → Content → Header, plus Footer and FAQ), not the storefront code. `update_content` does it when an admin connector is attached.\n\n## The contact form\n\nThe storefront's `/contact` page renders a contact form by its key, and every store has a default `main` form (name, email, phone, subject, message). On the full connector `list_contact_forms` and `get_contact_form` read them, `create_contact_form` adds a second one (\"wholesale\", \"returns\"), `update_contact_form` changes its wording, success text, active flag or which sales channels may use it, and `add_contact_form_field`, `update_contact_form_field` and `remove_contact_form_field` shape the fields (SELECT and MULTI_SELECT need `enumValues`; `email` and `message` cannot be made optional; the five built-in fields can be relabelled or hidden but not removed). `seed_default_contact_form` is the \"reset to defaults\" when a merchant's contact page shows no form. `delete_contact_form` is permanent and keeps the inquiries already sent through it.\n\nTwo things to say every time: a new form is data, so it does nothing until the storefront asks for it by key, and the messages shoppers send arrive as inquiries, which `brainerce-order-handling` covers (`list_inquiries`, `reply_to_inquiry`). Contact-form tools need a signed-in (OAuth) session and none of them are on the ChatGPT app.\n\n## Transactional emails\n\nThe order confirmation, shipped and cancellation emails are the other words on a store that are not product copy. They are templates, editable per event and per language on the full connector, and the sending domain the store uses is configured the same way; `brainerce-store-architecture` covers both under \"Email sending and domains\". None of it is on the ChatGPT app; there it is Settings, then Email.\n\n## Static pages\n\nA **Page** entry carries a slug in lower-kebab form, a title, the body, and its own SEO block: title, description and social image. That is what an About page, a Shipping Policy or a Terms page is.\n\nThe storefront still has to route it. A Page entry is not automatically live at `/about`; the storefront reads the entry and decides. If a merchant has published a page and cannot reach it, that is a storefront routing gap, not a content problem.\n\n⛔ **Merchant-authored HTML is not sanitized by the server**, deliberately, because some merchants embed things a strict sanitizer would strip. Rich text bodies, page bodies and FAQ answers all arrive raw. A storefront rendering them must sanitize before injecting, and this is worth saying to a developer unprompted.\n\n## Announcements\n\nThe `ANNOUNCEMENT` type carries the message, a severity of info, warning or success, whether it can be dismissed, an optional start and end time, and an optional call to action.\n\nTwo things to tell a merchant:\n\n- The **start and end times are filtered by the storefront**, not enforced by the server. A storefront that ignores them shows the banner forever.\n- **Unpublish rather than delete** when a sale ends. See the next section for why.\n\n## ⛔ Deleting is permanent, and storefronts fall back to nothing\n\nDelete a content entry and it is gone. A storefront that expected it renders whatever it was built to show when there is nothing, which is usually nothing at all. Deleting a blog post is permanent too.\n\nThe reversible move is **Unpublish**. Recommend it every time a merchant says \"take this down\", and only mention delete if they say they want it gone for good.\n\n## Blog SEO, and what happens automatically\n\nEvery post carries:\n\n| Field               | What it controls                                                              |\n| ------------------- | ----------------------------------------------------------------------------- |\n| **Slug**            | The address, `/blog/summer-care-guide`. Auto-derived from the title, editable |\n| **SEO title**       | The headline in search results; falls back to the post title                  |\n| **SEO description** | The snippet under it; 150 to 160 characters works                             |\n| **OG image**        | The image shown when shared; falls back to the cover image                    |\n\nStatic Pages carry the same three SEO fields, but NOT the redirect below: `resolveSlugRedirect` covers products and blog posts only, never Pages.\n\n**Renaming a product or blog post slug is safe, but only if the storefront calls for it.** The platform records the rename; the redirect itself only happens when the storefront calls `client.resolveSlugRedirect('product' | 'blog', slug)` on a 404 and does a `permanentRedirect()` to the id it returns. That call is sales-channel (`vc_`) mode only, so a storeId-connected storefront gets no redirect at all, and it never applies to a Page slug. Tell merchants it is fine on a vc\\_ storefront that implements the check; otherwise the old address just 404s.\n\nPublished posts go into the sitemap on their own, and Brainerce pings search engines the moment a post goes live, so nothing needs submitting by hand.\n\n## Getting found on Google\n\n### What a Brainerce storefront does by itself\n\nA storefront built from the current template, or built by following the integration guide, ships with a sitemap covering products, categories, posts and pages; schema.org structured data on products so prices and star ratings can appear in results; instant indexing so a new post is crawled in minutes; and 301 redirects when a product or blog post slug is renamed, on a sales-channel (`vc_`) connection (never on Pages, and not on a storeId-connected storefront).\n\nOne caveat that applies to all four: **they live in the storefront, not the platform.** A site built before those features existed, or built by hand without the guide, may be missing some. If in doubt, that is a question for whoever built the storefront.\n\n### What Brainerce does not do\n\nSay these plainly, because merchants assume otherwise:\n\n- Brainerce does **not** run ads. Everything here is organic search.\n- Brainerce does **not** guarantee a ranking, and nobody can.\n- Brainerce does **not** submit the site to Google. Verifying the domain is the owner's job.\n\n### The three things only the merchant can do\n\n1. **Write the homepage meta description.** In **Settings**, the **Homepage SEO** card. Fifty to 160 characters saying what the shop sells and for whom. Without it Google picks text off the page at random. There is a Create with AI button.\n2. **Verify the domain in Google Search Console.** Add the domain in Search Console, choose the HTML tag method, copy the tag. In Brainerce go to **Apps, then Google**, pick the sales channel, open the **Merchant Center** tab, and paste it into **Google site verification**. ⛔ It is NOT in the sales-channel settings, which is where everyone looks first. The storefront renders the tag within a few minutes, then click Verify.\n3. **Give every product a slug and a meta description.** Both live on the product. The **SEO column** on the Products page scores each one and offers one-click fixes, including AI-written descriptions and image alt text.\n\n### SEO Autopilot\n\n**SEO Autopilot writes blog posts for the store on a cadence** (keyword planning → AI article →\npublish → IndexNow ping). It is off on a new store, its dashboard page is in rollout to platform\nsuper-admins only, and even once a merchant turns it on the default mode is REVIEW, which files\neach article as a draft for the merchant to approve. Only AUTOPILOT mode publishes without a\nhuman. If it is not in the sidebar, nothing is broken; that is the rollout gate, not a missing\nfeature. Separately, and always available, is the per-product SEO score in the products table,\nwhich is a smaller, on-demand thing.\n\n## Response shape\n\n> Your About page goes in **Content**, as a Page entry. New content, pick Page, give it the slug `about`, write the body, and fill in the SEO title and description while you are there.\n>\n> Two things to know. It saves as a Draft, so publish it or nothing sees it. And a Page entry is data: your storefront has to be built to fetch and route it, so if `/about` still 404s after publishing, that is a change on the storefront side rather than something to fix here.\n>\n> To get it into the menu, add it as a link in your **Header** content entry.\n>\n> I cannot do any of that from this conversation, so those are steps for you in the dashboard.\n\n## Rules\n\n- Never report a content, page or blog change as done unless a content tool is actually in your tool list and the call returned. On the ChatGPT connector, and on any API-key connection, there is no such tool and the answer is a dashboard route.\n- Navigation has no tool anywhere. Do not imply otherwise even on the full connector.\n- Lead with \"this is data, your storefront renders it\" whenever a merchant reports that something does not appear.\n- Recommend Unpublish, not Delete. Deletion is permanent and storefronts fall back to nothing.\n- Do not invent a navigation builder. It is the category tree plus a Header entry.\n- Give the exact dashboard route, including the tab. The Search Console tag in particular is somewhere nobody guesses.\n- Write the negative space. If a merchant asks for something Brainerce does not do (ads, ranking guarantees) or for SEO Autopilot before it is rolled out to their store, say so rather than answering with generic advice that reads like a yes.\n- Tell developers that page, rich text and FAQ HTML is unsanitized, before they render it.\n\n## Reference files in this skill\n\n- `references/content-shapes.md`: the payload shape of each of the six content types, the sanitisation rule, and how a menu is assembled from the category tree plus the header entry. For developers.\n\n## Cross-skill connections\n\n- The category tree that is half the menu: `brainerce-store-architecture`.\n- Structured data attached to products: `brainerce-custom-fields`.\n- Answering the messages the contact form brings in: `brainerce-order-handling`.\n- Email templates and the sending domain: `brainerce-store-architecture`.\n- Per-product SEO while adding a product: `brainerce-product-onboarding`.\n- The SDK calls that fetch content and posts: `brainerce-sdk`.\n- Routing and rendering it in a storefront, including sanitisation: `brainerce-storefront-build`.\n\nRoute once, and do not bounce back and forth.\n"
}

SHA-256 of public snapshot: e3f0f20272fa4d358c1baabe93d755f1b427fa13ae0868a1a99d6a17444c2e33