HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/.codex/.tmp/plugins/plugins/wix/skills/wix-headless/references/verticals/_schema.json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Wix Headless Vertical Frontmatter (Phase 1 — discovery only)",
  "description": "Validates verticals/<name>.md frontmatter. Phase 1 scope only — later phases (setup, seed, design, pages, build) are owned by @skills/wix-manage plus this skill's own templates and INSTRUCTIONS.md files; per-pack fields (packages, cmsCollections, seed, components, componentsCss, pages, creates, contributes, include) are not part of this skill and not validated here.",
  "type": "object",
  "required": ["name", "description"],
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]*$",
      "description": "Must match filename stem (e.g., stores.md → 'stores')"
    },
    "description": { "type": "string" },
    "triggers": {
      "type": "array",
      "items": { "type": "string" },
      "description": "Prompt patterns that route to this vertical. Empty allowed for transitive-only packs (ecom, gift-cards, cms). The SKILL.md routing table is the actual source of truth for what gets loaded; this is human reference + a fallback signal."
    },
    "requires": {
      "type": "array",
      "items": { "type": "string" },
      "description": "Verticals that must be co-loaded in the same read batch when this pack is loaded. Today: stores → [ecom, gift-cards]; gift-cards → [ecom]."
    },
    "features": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["name", "description"],
        "additionalProperties": false,
        "properties": {
          "name": { "type": "string" },
          "description": { "type": "string" }
        }
      },
      "description": "Feature blurbs for DISCOVERY.md Step 3 Section B."
    },
    "apps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["name"],
        "additionalProperties": false,
        "properties": {
          "name": { "type": "string" },
          "appDefId": { "type": "string" }
        }
      },
      "description": "Zero or one entry per pack. apps[0].name fills the Source column of the Pages table."
    },
    "routes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["route"],
        "additionalProperties": false,
        "properties": {
          "route": {
            "type": "string",
            "description": "URL path (e.g. /cart) OR the literal 'Hosted by Wix' for Wix-hosted endpoints like checkout."
          },
          "name": {
            "type": "string",
            "description": "Optional user-facing page name override for DISCOVERY.md's Section C table. When omitted, the orchestrator derives the name from the path (/ → Home; /thank-you → Thank You). Set this only when path-derivation produces a poor name (e.g. /products/[slug] → 'Product Detail') or when the route has no path (e.g. ecom's Wix-hosted Checkout)."
          }
        }
      }
    },
    "disabled": {
      "type": "boolean",
      "description": "If true, the pack's surfaces (pages, nav links, home blocks) are inactive by default — they ship as code but do not appear without a separate user action (today: enabling the matching Wix app from the dashboard, which the pack's runtime probe detects). DISCOVERY.md plan composition (Sections B + C) skips features and routes from disabled packs so the plan never promises a surface the user did not ask for. Today only the gift-cards pack uses disabled: true."
    }
  }
}