{"id":"f545f539-4ee6-40b0-9258-23a3f109021f","shortId":"EffFgv","kind":"skill","title":"generating-weaverse-project-json","tagline":"Use when generating Weaverse project export JSON for import into the Weaverse editor. Triggers on requests to create, build, or produce a Weaverse project JSON file from a site migration, design spec, page layout description, or existing export. Also use when converting section p","description":"# Generating Weaverse Project JSON\n\nGenerate valid, import-ready Weaverse project export JSON files.\n\n## Overview\n\nThis skill produces JSON files that conform to the Weaverse import contract. It works independently — you can use it from a site migration, a design spec, a verbal description, or any other input that describes what pages and sections should exist.\n\nThe output is a single JSON file matching the schema in `references/project-json-schema.md`, with a real-world example in `references/demo.json`.\n\n## Inputs\n\nThis skill accepts any of these as input:\n\n- **Section mapping** from `cloning-websites-to-weaverse` (migration flow)\n- **Design spec** describing pages, sections, and content\n- **Verbal description** of what the storefront should look like\n- **Existing export** to modify or extend\n\nThe only hard requirement: you need to know which section types to use. Read `app/weaverse/components.ts` to get the list of registered sections and blocks.\n\n## Generation Steps\n\n1. **Read references** — load `references/project-json-schema.md` for the contract and `references/demo.json` for a complete real-world example\n2. **Identify registered types** — read `app/weaverse/components.ts` to know which section and block types are available\n3. **Read section source code** — for each section type you plan to use, read its source in `app/sections/` or `app/components/` to learn valid schema fields, enum values, and defaults\n4. **Build the JSON** following the structure below\n5. **Run the validator** — execute `python scripts/validate.py <output-file>` to catch structural errors\n6. **Fix any issues** the validator reports, then re-run until clean\n\n## JSON Structure\n\n### Top-level\n\n```json\n{\n  \"version\": \"1.0.0\",\n  \"exportedAt\": \"<ISO timestamp>\",\n  \"project\": { \"name\": \"<name>\", \"config\": {} },\n  \"pages\": [],\n  \"pageAssignments\": []\n}\n```\n\n### project.config\n\nContains theme settings, locale, and colors. Accepted keys:\n\n| Key | Type | Purpose |\n|-----|------|---------|\n| `previewHost` | string | Dev server URL, usually `http://localhost:3456` |\n| `theme` | object | Storefront-wide design tokens (colors, typography, layout) |\n| `defaultLocale` | object | `{ label, language, country, currency, pathPrefix }` |\n| `recentColors` | string[] | Editor color picker recent colors |\n\nFor `theme`, refer to `references/demo.json` → `project.config.theme` for the full set of valid keys. Key categories:\n\n- **Colors**: `colorPrimary`, `colorText`, `colorBackground`, `colorLine`, `colorTextSubtle`, `colorLineSubtle`, `colorTextInverse`, `colorForeground`\n- **Typography**: `bodyBaseSize`, `bodyBaseLineHeight`, `bodyBaseSpacing`, `h1BaseSize`, `headingBaseLineHeight`, `headingBaseSpacing`\n- **Layout**: `pageWidth`, `footerWidth`, `headerWidth`, `navHeightDesktop`, `navHeightTablet`, `navHeightMobile`\n- **Header/Footer**: `headerBgColor`, `headerText`, `footerBgColor`, `footerText`, `topbarBgColor`, `topbarTextColor`, `topbarHeight`\n- **Buttons**: `buttonPrimaryBg`, `buttonPrimaryColor`, `buttonSecondaryBg`, `buttonSecondaryColor`, `btnCornerRadius`\n- **Product cards**: `pcardAlignment`, `pcardImageRatio`, `pcardBorderRadius`, `pcardShowVendor`, `pcardShowReviews`, `pcardShowSalePrice`, etc.\n- **Badges**: `newBadgeText`, `newBadgeColor`, `saleBadgeText`, `saleBadgeColor`, `soldOutBadgeText`, `soldOutBadgeColor`, `bestSellerBadgeText`, `bestSellerBadgeColor`\n- **Social**: `socialFacebook`, `socialInstagram`, `socialLinkedIn`, `socialX`\n- **Newsletter**: `newsletterTitle`, `newsletterDescription`, `newsletterButtonText`, `newsletterPlaceholder`, `newsletterPopupEnabled`, etc.\n\nOnly include theme keys you understand and intend to set. Do not copy the entire demo theme blindly.\n\n### Pages\n\nEach page has `id`, `name`, `rootId`, and a flat `items` array:\n\n```json\n{\n  \"id\": \"b98mnnqmv3tmce7wmw3l7vw4\",\n  \"name\": \"Homepage\",\n  \"rootId\": \"019b917a-f48f-72d4-aee7-3b1eae6b7dca\",\n  \"items\": [\n    { \"id\": \"019b917a-f48f-72d4-aee7-3b1eae6b7dca\", \"type\": \"main\", \"data\": {}, \"children\": [{ \"id\": \"019b917a-f48f-72d4-aee7-3b1f5ca586c1\" }] },\n    { \"id\": \"019b917a-f48f-72d4-aee7-3b1f5ca586c1\", \"type\": \"hero-image\", \"data\": { \"height\": \"small\" }, \"children\": [{ \"id\": \"019b917a-f48f-72d4-aee7-3b22cd55e21b\" }] },\n    { \"id\": \"019b917a-f48f-72d4-aee7-3b22cd55e21b\", \"type\": \"heading\", \"data\": { \"content\": \"Welcome\" }, \"children\": [] }\n  ]\n}\n```\n\nKey rules:\n- **Flat items** — all items live in the `items` array, hierarchy is expressed through `children` id-references\n- **One root `main` item** per page — its id must match `rootId`\n- **`children`** is REQUIRED on every item — use `[]` for leaf items, `[{ \"id\": \"<item-id>\" }]` for parents\n- **`data`** is REQUIRED on every item — use `{}` when no non-default values are needed\n- **`type`** must be a registered section or block type from `app/weaverse/components.ts`\n\n**CRITICAL:** The Weaverse importer expects both `data` and `children` to be present on EVERY item. Omitting them causes silent import failures (empty page renders). Always include `\"data\": {}` and `\"children\": []` even when empty.\n\n### Page Assignments\n\nMaps pages to routes:\n\n```json\n{ \"pageId\": \"b98mnnqmv3tmce7wmw3l7vw4\", \"type\": \"INDEX\", \"handle\": \"\", \"locale\": \"en-us\" }\n```\n\nCommon types: `INDEX`, `PRODUCT`, `COLLECTION`, `ALL_PRODUCTS`, `COLLECTION_LIST`, `PAGE`, `BLOG`, `ARTICLE`, `CUSTOM`.\n\nFor `CUSTOM` pages, set `handle` to the route slug (e.g., `\"reseller\"`). For standard template pages, `handle` is usually empty `\"\"`.\n\n### Template page stubs\n\nStandard pages (product, collection, blog, article) that aren't being customized should be empty stubs:\n\n```json\n{\n  \"id\": \"qa8xa47ou35atbo1ik4w7v6y\",\n  \"name\": \"Default product\",\n  \"rootId\": \"019b917a-f490-794d-95d0-82a578d7cdfc\",\n  \"items\": [{ \"id\": \"019b917a-f490-794d-95d0-82a578d7cdfc\", \"type\": \"main\", \"data\": {}, \"children\": [] }]\n}\n```\n\n## Data Value Rules\n\n### Only use verified enum values\n\nBefore writing any `select`, `toggle-group`, or `position` value, read the section source code. Common mistakes:\n\n| Wrong | Correct | Field |\n|-------|---------|-------|\n| `\"custom\"` | `\"small\"`, `\"medium\"`, `\"large\"`, `\"full\"` | height |\n| `\"stretch\"` | `\"full\"`, `\"fixed\"` | width |\n| `\"right\"` / `\"left\"` | `\"start\"`, `\"end\"` | desktopMediaPosition |\n| `\"white\"` / `\"black\"` | `\"light\"`, `\"dark\"` | arrowsColor |\n\n### Only include non-default values\n\nIf a field matches the schema default, omit it. The Weaverse editor strips defaults on save. Including them creates noise.\n\n### Shopify entity references\n\nCollections and products use object format, not bare strings:\n\n```json\n// Collections\n\"collections\": [{ \"id\": 456905851102, \"handle\": \"covers\" }]\n\n// Products\n\"product\": { \"id\": 123456789, \"handle\": \"my-product\" }\n```\n\nIf real Shopify IDs are unknown, omit the field or use `[]`. Do not invent fake IDs.\n\n### Image fields\n\nExternal images use a bare URL string. Shopify-hosted images use the media object:\n\n```json\n// External\n\"backgroundImage\": \"https://example.com/image.jpg\"\n\n// Shopify media\n\"backgroundImage\": {\n  \"id\": \"gid://shopify/MediaImage/12345\",\n  \"url\": \"https://cdn.shopify.com/...\",\n  \"width\": 1920, \"height\": 1080, \"altText\": \"Description\"\n}\n```\n\n## ID Format Rules\n\nPage IDs and item IDs use different formats:\n\n| Entity | Format | Example |\n|--------|--------|---------|\n| **Page `id`** | CUID (25-char alphanumeric) | `b98mnnqmv3tmce7wmw3l7vw4` |\n| **Item `id`** (and `rootId`) | UUID v7 (hyphenated) | `019b917a-f48f-72d4-aee7-3b1eae6b7dca` |\n\nIntegrity rules:\n- Every page `id` must be unique across the export\n- Every item `id` must be unique across the export\n- `rootId` must match the root `main` item's `id` exactly\n- Every child reference must point to an existing item in the same page\n- Page IDs are CUIDs — use a CUID generator or produce 25-char lowercase alphanumeric strings\n- Item IDs are UUIDs — use UUID v7 format (timestamp-sortable, hyphenated)\n\n## Validation\n\nAfter generating the JSON, run the bundled validator:\n\n```bash\npython scripts/validate.py <path-to-output.json>\n```\n\nThe validator checks:\n- Valid JSON structure\n- Required top-level fields present\n- Every page has `id`, `name`, `rootId`, `items`\n- Every `rootId` resolves to an item with `type: \"main\"`\n- Every item has `data` and `children` fields (both required)\n- No duplicate item IDs\n- All child references resolve to existing items within the same page\n- All `pageAssignment.pageId` values resolve to existing pages\n\nFix any reported errors and re-run until clean. Do not deliver JSON that fails validation.\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---------|-----|\n| Missing `data` or `children` on items | Both are REQUIRED on every item — use `\"data\": {}` and `\"children\": []` even when empty |\n| Nesting full items inside `children` | Use `{ \"id\": \"...\" }` references only |\n| `rootId` doesn't match any item | Ensure root `main` item's id equals `rootId` |\n| Using unregistered section types | Read `app/weaverse/components.ts` first |\n| Duplicate IDs | Page IDs = CUIDs, item IDs = UUIDs — every id must be unique |\n| Including default values in `data` | Omit fields that match schema defaults |\n| Guessing enum values | Read the section source for valid options |\n| Copying entire demo theme blindly | Only include keys you understand and intend |\n| Missing `pageAssignments` | Every page needs a route assignment |\n| Fake Shopify IDs | Omit unknown IDs, let user select in editor |","tags":["generating","weaverse","project","json","shopify","hydrogen","skills","agent-skills","agentic-commerce","shopify-hydrogen","shopify-hydrogen-skills","weaverse-hydrogen"],"capabilities":["skill","source-weaverse","skill-generating-weaverse-project-json","topic-agent-skills","topic-agentic-commerce","topic-shopify-hydrogen","topic-shopify-hydrogen-skills","topic-weaverse-hydrogen"],"categories":["shopify-hydrogen-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Weaverse/shopify-hydrogen-skills/generating-weaverse-project-json","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Weaverse/shopify-hydrogen-skills","source_repo":"https://github.com/Weaverse/shopify-hydrogen-skills","install_from":"skills.sh"}},"qualityScore":"0.467","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 34 github stars · SKILL.md body (9,411 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:04:11.998Z","embedding":null,"createdAt":"2026-04-24T12:57:21.862Z","updatedAt":"2026-05-18T19:04:11.998Z","lastSeenAt":"2026-05-18T19:04:11.998Z","tsv":"'/...':862 '/image.jpg':853 '019b917a':463,471,482,489,504,511,697,705,898 '019b917a-f48f-72d4-aee7-3b1eae6b7dca':462,470,897 '019b917a-f48f-72d4-aee7-3b1f5ca586c1':481,488 '019b917a-f48f-72d4-aee7-3b22cd55e21b':503,510 '019b917a-f490-794d-95d0-82a578d7cdfc':696,704 '1':193 '1.0.0':293 '1080':866 '123456789':810 '1920':864 '2':210 '25':886,956 '3':225 '3456':319 '3b1eae6b7dca':467,475,902 '3b1f5ca586c1':486,493 '3b22cd55e21b':508,515 '4':254 '456905851102':804 '5':262 '6':273 '72d4':465,473,484,491,506,513,900 '794d':699,707 '82a578d7cdfc':701,709 '95d0':700,708 'accept':129,307 'across':911,920 'aee7':466,474,485,492,507,514,901 'alphanumer':888,959 'also':44 'alttext':867 'alway':615 'app/components':244 'app/sections':242 'app/weaverse/components.ts':181,215,590,1112 'aren':681 'array':455,532 'arrowscolor':761 'articl':650,679 'assign':624,1167 'avail':224 'b98mnnqmv3tmce7wmw3l7vw4':458,631,889 'backgroundimag':850,856 'badg':405 'bare':798,837 'bash':982 'bestsellerbadgecolor':413 'bestsellerbadgetext':412 'black':758 'blind':443,1152 'block':190,221,587 'blog':649,678 'bodybaselineheight':370 'bodybases':369 'bodybasespac':371 'btncornerradius':395 'build':24,255 'bundl':980 'button':390 'buttonprimarybg':391 'buttonprimarycolor':392 'buttonsecondarybg':393 'buttonsecondarycolor':394 'card':397 'catch':270 'categori':358 'caus':608 'cdn.shopify.com':861 'cdn.shopify.com/...':860 'char':887,957 'check':987 'child':934,1027 'children':479,501,521,537,552,599,619,713,1018,1068,1080,1088 'clean':285,1053 'clone':139 'cloning-websites-to-weavers':138 'code':229,736 'collect':643,646,677,791,801,802 'color':306,327,340,343,359 'colorbackground':362 'colorforeground':367 'colorlin':363 'colorlinesubtl':365 'colorprimari':360 'colortext':361 'colortextinvers':366 'colortextsubtl':364 'common':639,737,1061 'complet':205 'config':297 'conform':71 'contain':301 'content':151,519 'contract':76,200 'convert':47 'copi':438,1148 'correct':740 'countri':334 'cover':806 'creat':23,786 'critic':591 'cuid':885,949,952,1118 'currenc':335 'custom':651,653,684,742 'dark':760 'data':478,498,518,565,597,617,712,714,1016,1066,1078,1131 'default':253,576,693,766,774,781,1128,1137 'defaultlocal':330 'deliv':1056 'demo':441,1150 'describ':99,147 'descript':40,93,153,868 'design':36,89,145,325 'desktopmediaposit':756 'dev':314 'differ':878 'doesn':1094 'duplic':1023,1114 'e.g':661 'editor':18,339,779,1178 'empti':612,622,670,687,1083 'en':637 'en-us':636 'end':755 'ensur':1099 'entir':440,1149 'entiti':789,880 'enum':250,720,1139 'equal':1105 'error':272,1047 'etc':404,425 'even':620,1081 'everi':556,569,604,905,914,933,997,1004,1013,1075,1122,1162 'exact':932 'exampl':123,209,882 'example.com':852 'example.com/image.jpg':851 'execut':266 'exist':42,105,161,940,1031,1042 'expect':595 'export':11,43,61,162,913,922 'exportedat':294 'express':535 'extend':166 'extern':833,849 'f48f':464,472,483,490,505,512,899 'f490':698,706 'fail':1059 'failur':611 'fake':829,1168 'field':249,741,770,823,832,995,1019,1133 'file':31,63,69,112 'first':1113 'fix':274,750,1044,1064 'flat':453,524 'flow':144 'follow':258 'footerbgcolor':385 'footertext':386 'footerwidth':377 'format':796,870,879,881,968 'full':352,746,749,1085 'generat':2,8,50,54,191,953,975 'generating-weaverse-project-json':1 'get':183 'group':728 'guess':1138 'h1basesize':372 'handl':634,656,667,805,811 'hard':169 'head':517 'header/footer':382 'headerbgcolor':383 'headertext':384 'headerwidth':378 'headingbaselineheight':373 'headingbasespac':374 'height':499,747,865 'hero':496 'hero-imag':495 'hierarchi':533 'homepag':460 'host':842 'hyphen':896,972 'id':448,457,469,480,487,502,509,539,548,562,690,703,803,809,818,830,857,869,873,876,884,891,907,916,931,947,962,1000,1025,1090,1104,1115,1117,1120,1123,1170,1173 'id-refer':538 'identifi':211 'imag':497,831,834,843 'import':14,57,75,594,610 'import-readi':56 'includ':427,616,763,784,1127,1154 'independ':79 'index':633,641 'input':97,126,134 'insid':1087 'integr':903 'intend':433,1159 'invent':828 'issu':276 'item':454,468,525,527,531,544,557,561,570,605,702,875,890,915,929,941,961,1003,1009,1014,1024,1032,1070,1076,1086,1098,1102,1119 'json':5,12,30,53,62,68,111,257,286,291,456,629,689,800,848,977,989,1057 'key':308,309,356,357,429,522,1155 'know':174,217 'label':332 'languag':333 'larg':745 'layout':39,329,375 'leaf':560 'learn':246 'left':753 'let':1174 'level':290,994 'light':759 'like':160 'list':185,647 'live':528 'load':196 'local':304,635 'localhost':318 'look':159 'lowercas':958 'main':477,543,711,928,1012,1101 'map':136,625 'match':113,550,771,925,1096,1135 'media':846,855 'medium':744 'migrat':35,87,143 'miss':1065,1160 'mistak':738,1062,1063 'modifi':164 'must':549,581,908,917,924,936,1124 'my-product':812 'name':296,449,459,692,1001 'navheightdesktop':379 'navheightmobil':381 'navheighttablet':380 'need':172,579,1164 'nest':1084 'newbadgecolor':407 'newbadgetext':406 'newslett':419 'newsletterbuttontext':422 'newsletterdescript':421 'newsletterplacehold':423 'newsletterpopupen':424 'newslettertitl':420 'nois':787 'non':575,765 'non-default':574,764 'object':321,331,795,847 'omit':606,775,821,1132,1171 'one':541 'option':1147 'output':107 'overview':64 'p':49 'page':38,101,148,298,444,446,546,613,623,626,648,654,666,672,675,872,883,906,945,946,998,1036,1043,1116,1163 'pageassign':299,1161 'pageassignment.pageid':1038 'pageid':630 'pagewidth':376 'parent':564 'pathprefix':336 'pcardalign':398 'pcardborderradius':400 'pcardimageratio':399 'pcardshowreview':402 'pcardshowsalepric':403 'pcardshowvendor':401 'per':545 'picker':341 'plan':235 'point':937 'posit':730 'present':602,996 'previewhost':312 'produc':26,67,955 'product':396,642,645,676,694,793,807,808,814 'project':4,10,29,52,60,295 'project.config':300 'project.config.theme':349 'purpos':311 'python':267,983 'qa8xa47ou35atbo1ik4w7v6y':691 're':282,1050 're-run':281,1049 'read':180,194,214,226,238,732,1111,1141 'readi':58 'real':121,207,816 'real-world':120,206 'recent':342 'recentcolor':337 'refer':195,346,540,790,935,1028,1091 'references/demo.json':125,202,348 'references/project-json-schema.md':117,197 'regist':187,212,584 'render':614 'report':279,1046 'request':21 'requir':170,554,567,991,1021,1073 'resel':662 'resolv':1006,1029,1040 'right':752 'root':542,927,1100 'rootid':450,461,551,695,893,923,1002,1005,1093,1106 'rout':628,659,1166 'rule':523,716,871,904 'run':263,283,978,1051 'salebadgecolor':409 'salebadgetext':408 'save':783 'schema':115,248,773,1136 'scripts/validate.py':268,984 'section':48,103,135,149,176,188,219,227,232,585,734,1109,1143 'select':725,1176 'server':315 'set':303,353,435,655 'shopifi':788,817,841,854,1169 'shopify-host':840 'shopify/mediaimage/12345':858 'silent':609 'singl':110 'site':34,86 'skill':66,128 'skill-generating-weaverse-project-json' 'slug':660 'small':500,743 'social':414 'socialfacebook':415 'socialinstagram':416 'sociallinkedin':417 'socialx':418 'soldoutbadgecolor':411 'soldoutbadgetext':410 'sortabl':971 'sourc':228,240,735,1144 'source-weaverse' 'spec':37,90,146 'standard':664,674 'start':754 'step':192 'storefront':157,323 'storefront-wid':322 'stretch':748 'string':313,338,799,839,960 'strip':780 'structur':260,271,287,990 'stub':673,688 'templat':665,671 'theme':302,320,345,428,442,1151 'timestamp':970 'timestamp-sort':969 'toggl':727 'toggle-group':726 'token':326 'top':289,993 'top-level':288,992 'topbarbgcolor':387 'topbarheight':389 'topbartextcolor':388 'topic-agent-skills' 'topic-agentic-commerce' 'topic-shopify-hydrogen' 'topic-shopify-hydrogen-skills' 'topic-weaverse-hydrogen' 'trigger':19 'type':177,213,222,233,310,476,494,516,580,588,632,640,710,1011,1110 'typographi':328,368 'understand':431,1157 'uniqu':910,919,1126 'unknown':820,1172 'unregist':1108 'url':316,838,859 'us':638 'use':6,45,82,179,237,558,571,718,794,825,835,844,877,950,965,1077,1089,1107 'user':1175 'usual':317,669 'uuid':894,964,966,1121 'v7':895,967 'valid':55,247,265,278,355,973,981,986,988,1060,1146 'valu':251,577,715,721,731,767,1039,1129,1140 'verbal':92,152 'verifi':719 'version':292 'weavers':3,9,17,28,51,59,74,142,593,778 'websit':140 'welcom':520 'white':757 'wide':324 'width':751,863 'within':1033 'work':78 'world':122,208 'write':723 'wrong':739","prices":[{"id":"55c41866-723b-411c-aeb8-124543926e7d","listingId":"f545f539-4ee6-40b0-9258-23a3f109021f","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Weaverse","category":"shopify-hydrogen-skills","install_from":"skills.sh"},"createdAt":"2026-04-24T12:57:21.862Z"}],"sources":[{"listingId":"f545f539-4ee6-40b0-9258-23a3f109021f","source":"github","sourceId":"Weaverse/shopify-hydrogen-skills/generating-weaverse-project-json","sourceUrl":"https://github.com/Weaverse/shopify-hydrogen-skills/tree/main/skills/generating-weaverse-project-json","isPrimary":false,"firstSeenAt":"2026-04-24T12:57:21.862Z","lastSeenAt":"2026-05-18T19:04:11.998Z"}],"details":{"listingId":"f545f539-4ee6-40b0-9258-23a3f109021f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Weaverse","slug":"generating-weaverse-project-json","github":{"repo":"Weaverse/shopify-hydrogen-skills","stars":34,"topics":["agent-skills","agentic-commerce","shopify-hydrogen","shopify-hydrogen-skills","weaverse-hydrogen"],"license":null,"html_url":"https://github.com/Weaverse/shopify-hydrogen-skills","pushed_at":"2026-05-16T06:13:59Z","description":"Dedicated agent skills for building, upgrading, and maintaining Shopify Hydrogen storefronts — works with Claude, Cursor, Copilot, and more.","skill_md_sha":"6ee70d50fd537f50ee08746f9b8e64716c0378de","skill_md_path":"skills/generating-weaverse-project-json/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Weaverse/shopify-hydrogen-skills/tree/main/skills/generating-weaverse-project-json"},"layout":"multi","source":"github","category":"shopify-hydrogen-skills","frontmatter":{"name":"generating-weaverse-project-json","description":"Use when generating Weaverse project export JSON for import into the Weaverse editor. Triggers on requests to create, build, or produce a Weaverse project JSON file from a site migration, design spec, page layout description, or existing export. Also use when converting section plans into importable project and pages data."},"skills_sh_url":"https://skills.sh/Weaverse/shopify-hydrogen-skills/generating-weaverse-project-json"},"updatedAt":"2026-05-18T19:04:11.998Z"}}