Content
The page tree is the product. This page inventories what surface-swift puts in area 3, which subtrees are framework (never re-authored) and which are editorial (re-authored per customer), and the placeholder convention that makes un-replaced copy fail loudly.
What the baseline guarantees
Layer: surface-swift 1.5.1. Two mode trees.
replace/_content (source-wins — the structural skeleton; a re-deserialize replaces it):
Swift 2/area.yml the area record itself
Customer center/ Account (Addresses, Carts, Favorites, Orders, Quotes, Users),
CSR (Accounts, Carts, Orders, Users), Customer center
(Change password, My addresses, My carts, My favorites,
My orders, My profile > Edit profile, My quotes, My returns,
My wallet), Overview
Navigation/ Footer Navigation, Secondary Navigation
Newsletter Emails/ Unsubscribe confirmation page
Page presets/Home pages/ Home preset
Product Components/ Product Info (right side), Product List, Product List Card
Search result page/
Service Pages/ CartService, CartSummary, Content search results,
Favorites list service, Product and content search results,
Related products list, Related products slider_grid,
Variant Selector Service
Shop/ Product Details, Product List
Shopping cart/ Add credit card, Cart (Checkout anonymous, Checkout user,
Empty cart, Quote checkout user)
Sign in/ Create user profile (User profile confirmed, User profile
created), Forgot password, Sign in
System emails/ Checkout Emails, Form Emails, Stock notification Email,
User Management Emails
merge/_content (field-level merge — the editorial surface; your edits survive a
re-deserialize):
Home/ 8 grid rows (1, 4, 5, 6, 7, 8, 9, 10)
Header _ Footer/ Desktop Header, Desktop Footer, Mobile Header, Mobile Footer
About/ 8 grid rows + Contact > Thank you
Posts/ Buying guides, Reviews, Travel guides
Navigation/Footer Navigation/ About the shop (About us, Employees, Privacy policy, Terms),
Help and info (Cookie notice, Delivery, Frequently asked),
Languages (Preferences)
Navigation/Secondary Navigation/ Find dealers
Newsletter Emails/ Swift Newsletters - Dark/Light (Announcement, Sale)
Area record (layers/surface-swift (replace tree) _content/Swift 2/area.yml), values you will change:
AreaUrlName swift-2
AreaCulture en-US
AreaLayout Designs/Swift-v2/Swift-v2_Page.cshtml
AreaColorSchemeGroupId default AreaColorSchemeId light
AreaTypographyId default AreaButtonStyleId default
AnonymousUsers cart-price (hides prices + add-to-cart for anonymous)
HeaderDesktop 157 / HeaderMobile 159 / FooterDesktop 156 / FooterMobile 158
Values the layer deliberately does NOT serialize, which you MUST bind after deserialize
(surface.contract-notes.json `perEnvironmentAreaExclusions`):
AreaFrontpage, AreaEcomShopId, AreaEcomLanguageId, AreaEcomCurrencyId, AreaEcomCountryCode,
AreaStockLocationID, AreaCdnHost, AreaDomain, AreaNoindex/Nofollow/RobotsTxt.
Then restart the host — Area routing, frontpage resolution and shop resolution are cached
at host startup.
Placeholder convention: 56 YAML files carry the literal string `Placeholder — <function>`,
e.g. `Placeholder — about intro heading (who this company is)`. `Placeholder` is the
machine-detectable marker a design gate greps for (/placeholder/i). Copy left un-replaced at
build time fails loudly rather than shipping.
Not present by design: no bike/lorem sample content anywhere in the tree; no
EcomFieldDisplayGroup rows (surface-swift 1.5.0 removed the dead PDP band). Which skill covers it
dw-content-modelling (dynamo: true) — references/page-paragraph-writes.md is the one to read before any page or paragraph write; references/modelling-discipline.md for item-type schema; references/language-layers.md for the mirror write. dw-swift-building (dynamo: true) — references/swift2-page-structure.md and references/component-system-and-reskin.md for the re-skin doctrine. dw-demo-swift (dynamo: false) — references/paragraphs.md (622 lines) is the deepest account of paragraph write shapes; references/integrity-sweep.md is the post-deserialize gate.
Which MCP tools brand it
In the order dw-swift-building/SKILL.md:48-51 and :55-124 prescribe:
get_areas, get_pages_by_area_id, get_pages_by_parent_id, get_navigation_structure
get_page_item_field_values, get_item_field_values
save_areas
set_page_item_fields -> save_pages (this order, always: save_pages re-derives
MenuText from the item's Title field)
reorder_pages
set_item_field_values (batched; it spans different items in one call)
fetch_frontend_page_html Verify
Storefront: GET <site-root>/home returns 200 and the body contains zero occurrences of the string "Placeholder" once branding is done. Before branding it contains many — that is the intended fail-loud signal. MCP equivalent: fetch_frontend_page_html on <site-root>/home, grep for /placeholder/i.