information-architecture
Crystallize Information Architecture Skill
Design and implement folder hierarchies for Crystallize storefronts. This skill helps you create effective navigation structures, category pages, and content organization.
Consultation Approach
Before generating a folder structure, ask clarifying questions to understand the user's needs. Focus on questions 1, 3, and 4 first — these give you enough to propose an initial structure. Then iterate with the user, refining based on their feedback. Don't exhaustively interview before proposing; a concrete draft sparks better conversation than abstract questions.
Key Discovery Questions
-
What are you selling or publishing?
- "What kind of products or content will this store have?"
- "Is this B2C, B2B, or both?"
-
How do customers browse?
- "Do customers need to browse products in multiple ways? (e.g., by category AND by brand)"
- "Would you like collections like 'New Arrivals', 'Sale', or seasonal collections?"
-
Content Strategy
- "What content pages do you need? (About, Blog, Support, etc.)"
- "Do you have editorial content like guides, lookbooks, or tutorials?"
-
Multi-Market Commerce
- "Do you sell in multiple markets or regions with different product assortments?"
- "Do different markets have different pricing, availability, or content needs?"
-
Scale & Growth
- "How many products/categories do you expect to have?"
- "Any planned expansion to new categories or markets?"
After gathering answers to at least questions 1-3, propose an initial folder structure. It's easier for users to react to a concrete proposal than to answer more abstract questions. Present the tree, explain the reasoning, and iterate from there.
Core Concepts
Hierarchical Organization
Content in Crystallize is organized in a tree structure:
- Folders are the organizational containers
- Every item has a path (e.g.,
/shop/men/clothing) - Paths become URLs in the storefront
- The tree drives navigation, breadcrumbs, and category pages
The Three Organization Systems
- Hierarchical (Tree) - Parent/child folders for main navigation
- Sequential (Order) - Position within a folder for sorting
- Taxonomic (Topics) - Cross-cutting tags for filtering and discovery
This skill focuses on hierarchical organization. For topics and taxonomic classification, see the content-model skill which covers topic maps, filtering taxonomies, and cross-cutting tags.
Best Practices
1. User-Centric Design
Structure should match how customers think and shop:
- Fashion: By gender → By category → By type
- Electronics: By product type → By brand/features
- Food: By meal type or dietary need
2. Optimal Depth
Keep hierarchy 2-4 levels deep:
✅ Good: /shop/men/shoes/sneakers
❌ Too deep: /shop/clothing/men/casual/shoes/athletic/sneakers/running
3. Balanced Width
- Too few items per level = unnecessary clicks
- Too many items = overwhelming navigation
- Aim for 5-12 items at each level
4. SEO-Friendly Paths
Paths become URLs, so:
- Use descriptive, keyword-rich names
- Keep paths readable and logical
- Avoid IDs or codes in paths
5. Plan for Growth
Ask: "Where will new products/categories go?"
Common Patterns
Standard E-commerce
/
├── shop/
│ ├── category-1/
│ ├── category-2/
│ └── category-3/
├── brands/
├── sale/
├── new-arrivals/
└── about/
Fashion Store
/
├── shop/
│ ├── men/
│ │ ├── clothing/
│ │ ├── shoes/
│ │ └── accessories/
│ ├── women/
│ │ ├── clothing/
│ │ ├── shoes/
│ │ └── accessories/
│ └── kids/
├── brands/
├── collections/
│ ├── summer-2024/
│ └── basics/
└── sale/
Electronics Store
/
├── computers/
│ ├── laptops/
│ ├── desktops/
│ └── tablets/
├── mobile/
│ ├── phones/
│ └── accessories/
├── audio/
├── gaming/
├── deals/
└── support/
Content-Heavy Site
/
├── products/
├── blog/
│ ├── news/
│ ├── tutorials/
│ └── case-studies/
├── resources/
│ ├── guides/
│ └── documentation/
└── about/
Multi-Dimensional Navigation
When customers need to browse by multiple dimensions (category AND brand):
/
├── products/
│ ├── by-category/
│ │ ├── clothing/
│ │ ├── shoes/
│ │ └── accessories/
│ ├── by-brand/
│ │ ├── nike/
│ │ ├── adidas/
│ │ └── puma/
│ └── collections/
│ ├── summer-2024/
│ └── sale/
├── brands/ # Brand landing pages
└── about/
Use this pattern when:
- Customers think in both categories AND brands
- You have strong brand presence
- Different customer segments browse differently
Multi-Market Commerce (Shortcuts Pattern)
For stores selling in multiple markets with different assortments:
/
├── products/ # Master product location (canonical)
│ ├── clothing/
│ ├── shoes/
│ └── electronics/
├── markets/
│ ├── europe/
│ │ ├── germany/
│ │ │ └── products/ # Shortcuts to /products/ items
│ │ └── france/
│ │ └── products/
│ └── north-america/
│ ├── usa/
│ │ └── products/
│ └── canada/
│ └── products/
├── about/
└── blog/
What are shortcuts? In Crystallize, a shortcut is a reference (like a symbolic link) to an item that lives elsewhere in the tree. The item exists in one canonical location (e.g., /products/clothing/jacket) but can appear in other folders via shortcuts. Shortcuts share the same underlying product data — edits to the original propagate everywhere. This avoids duplicating products across folders while letting them appear in multiple navigation paths.
Key benefits:
- Products exist once in
/products/(single source of truth) - Market folders use shortcuts to reference products
- Different assortments per market (not all products everywhere)
- Market-specific category pages and content
- Pricing and availability controlled per market
When to use:
- Selling in multiple regions/countries
- Different product availability per market
- Region-specific pricing or content
- Regulatory requirements (some products not sold everywhere)
B2B + B2C Hybrid
/
├── shop/ # B2C storefront
│ ├── category-1/
│ └── category-2/
├── wholesale/ # B2B section
│ ├── price-lists/
│ └── bulk-orders/
├── products/ # Shared product catalog
└── about/
Folder Shapes
Different folders serve different purposes and benefit from different shapes. Use the content-model skill to create these shapes once you've finalized your hierarchy.
| Folder Type | Typical Shape Identifier | Shape Features |
|---|---|---|
| Category | category |
Hero image, description, featured products grid |
| Brand | brand-page |
Logo, story, brand values, all products |
| Collection | collection |
Theme, curated products, limited time |
| Landing | landing-page |
Flexible content blocks, CTAs |
After designing the folder hierarchy, hand off to the content-model skill to define the actual shape components for each folder type.
Operations Format
Folder operations use the mass-operations format:
{
"version": "0.0.1",
"operations": [
{
"name": "Shop",
"shapeIdentifier": "category",
"parentPath": "/",
"intent": "folder/upsert"
},
{
"name": "Men",
"shapeIdentifier": "category",
"parentPath": "/shop",
"intent": "folder/upsert"
}
]
}
Operation Fields
| Field | Description |
|---|---|
name |
Display name of the folder |
shapeIdentifier |
Which folder shape to use (must match an existing shape) |
parentPath |
Path to parent folder |
position |
Optional: order within parent |
intent |
folder/create (fails if exists) or folder/upsert (creates or updates — preferred for idempotent operations) |
Use folder/upsert by default so the operation can be safely re-run without errors if the folder already exists. Use folder/create only when you specifically want to fail if the folder is already there.
Integration with Other Systems
Navigation Menus
Top-level folders typically become main navigation:
Root folders → Main nav items
Second-level → Dropdown/mega menu
Third-level → Sub-navigation or sidebar
Breadcrumbs
The folder path creates breadcrumbs automatically:
/shop/men/shoes → Home > Shop > Men > Shoes
URL Routing
Folder paths map to frontend routes:
Crystallize path: /shop/men/shoes
Frontend URL: https://store.com/shop/men/shoes
Topics (Cross-cutting)
While folders handle main navigation, topics handle:
- Filters (color, size, material)
- Tags (sale, new, featured)
- Cross-category discovery
Reorganizing an Existing Structure
When a user already has a folder structure and wants to improve it:
- Audit the current tree — Ask the user to describe (or export) their current folder hierarchy. Identify pain points: too deep, inconsistent naming, duplicated products, orphaned folders.
- Identify what's working — Don't propose a full rewrite if only part of the tree is problematic. Preserve paths that are already indexed by search engines or bookmarked by customers.
- Propose incremental changes — Restructuring everything at once is risky. Suggest changes in phases: rename and flatten first, then reorganize, then clean up.
- Consider URL redirects — Changing folder paths changes URLs. Remind the user to set up redirects from old paths to new ones in their frontend to avoid broken links and SEO penalties.
- Use
folder/upsert— When generating operations for a restructure,upsertis safer because it won't fail on folders that already exist in the target structure.
Anti-Patterns
❌ Duplicating Products
Don't put the same product in multiple folders. Use topics instead:
❌ /men/sale/shoes/sneakers AND /sale/men/sneakers
✅ /men/shoes/sneakers (tagged with "sale" topic)
❌ Deep Nesting
Don't create unnecessary depth:
❌ /products/all-products/shoes/athletic/running/mens
✅ /shop/men/running-shoes
❌ Generic Names
Use descriptive, SEO-friendly names:
❌ /category-1/subcategory-a
✅ /electronics/smartphones
❌ Mixing Concerns
Keep organizational logic consistent:
❌ /men/sale/electronics/blue-items
✅ /men/electronics (use topics for "sale" and "blue")
More from crystallizeapi/ai
pricing
Design and implement pricing strategies in Crystallize using Price Variants, Price Lists, Promotions, and Markets. Use when recommending pricing structures, setting up multi-currency support, configuring B2B/B2C pricing, planning promotional campaigns, defining markets, or advising on pricing architecture for commerce projects. Also use when the user asks about currencies, multi-market setup, was/now pricing, strikethrough prices, wholesale pricing, coupon codes, discount campaigns, tiered pricing, cart discounts, tax-inclusive/exclusive pricing, or any question about how prices work in Crystallize — even if they don't explicitly mention "pricing".
15mutation
Mutate data in Crystallize - create products, documents, and folders, update item components, manage product variants and SKUs, publish/unpublish items, handle customers and orders, manage carts and checkout flows, convert cart to order, create orders from checkout or directly (POS, imports), record payments, track fulfillment pipeline stages, upload images and media, import data, delete items, and perform bulk operations. Use this skill when creating or updating any content in Crystallize, adding products to the catalogue, modifying descriptions or fields, setting up checkout, placing orders, managing stock, recording payments, tracking order fulfillment, or writing data through the Core API or Shop API.
13query
Query Crystallize APIs for product data, content, and commerce information. Use this skill when fetching product catalogs, listing items, searching products, filtering by attributes, browsing categories, building storefronts, retrieving cart data, reading orders or customers, building admin dashboards, getting item details by path or ID, implementing faceted navigation, paginating results, or reading any data from Crystallize. Covers Core API, Discovery API, Catalogue API, and Shop API queries. Also use when the user asks about GraphQL queries against Crystallize, reading product variants, getting component data, checking stock levels, or any read operation — even if they don't explicitly say "query".
13content-model
Design content models in Crystallize using Shapes, Pieces, Components, Topic Maps, and Grids. Create product structures, define document types, build taxonomies, organize catalogue items, design relationships between items, implement classification bridges, configure item relations with shape restrictions, and architect scalable data models. Use when modeling content, creating shapes, defining components, building taxonomies, designing relationship patterns, implementing semantic bridges, configuring product variants, or structuring catalogue hierarchies.
13js-api-client
Use the @crystallize/js-api-client package to interact with Crystallize APIs in JavaScript/TypeScript. Use when setting up the Crystallize API client, configuring credentials, calling catalogueApi/discoveryApi/pimApi/shopCartApi, working with high-level helpers for catalogue fetching, cart management, orders, customers, subscriptions, navigation, or using any helper from the @crystallize/js-api-client npm package.
12permissions
Manage user roles, permissions, and access control in Crystallize. Use when configuring field-level permissions (read-only or hidden fields for specific roles), managing user roles and team access, setting up access tokens with specific scopes, controlling who can view/edit specific content areas or component fields, designing role-based access for multi-team tenants, or planning permission strategies for content workflows.
11