[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M77TCD7AS573GQKTXEVCSNFS":3,"skill-same:01M77TCD7AS573GQKTXEVCSNFS":298},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":124,"commitSha":125,"skillDirectory":126,"forksCount":14,"repositoryHtmlUrl":127,"repositoryHomepageUrl":6,"ownerHtmlUrl":128,"ownerBlogUrl":129,"ownerDescription":130,"updatedAt":131,"install":132,"resources":145},"01M77TCD7AS573GQKTXEVCSNFS","open-design-landing",null,"Produce a world-class single-page editorial landing site in the Atelier Zero visual language (Monocle \u002F Apartamento \u002F Études editorial collage) — the same aesthetic OpenDesign uses for its own marketing surface. The agent fills a typed `inputs.json` from a brand brief, optionally generates 16 collage assets via gpt-image-2, then runs a pure-function composer that emits a self-contained HTML file. Drop-in scroll-reveal motion and a Headroom-style sticky nav are wired automatically.","hiktan44\u002Fopen-design-app","hiktan44","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F140920746?v=4","01M77SNV7J2RH7G3TQVS2FXMW9","hikmet tanriverdi","01M77SNV87GR8D3BJ9WJHFMZ9Y",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: open-design-landing\ndescription: >\n  Produce a world-class single-page editorial landing site in the\n  Atelier Zero visual language (Monocle \u002F Apartamento \u002F Études editorial\n  collage) — the same aesthetic OpenDesign uses for its own marketing\n  surface. The agent fills a typed `inputs.json` from a brand brief,\n  optionally generates 16 collage assets via gpt-image-2, then runs a\n  pure-function composer that emits a self-contained HTML file.\n  Drop-in scroll-reveal motion and a\n  Headroom-style sticky nav are wired automatically.\ntriggers:\n  - landing page\n  - 落地页\n  - editorial site\n  - magazine layout\n  - hero collage\n  - atelier zero\n  - open design landing\nod:\n  category: brand-page\n  surface: web\n  scenario: marketing\n  audience: founders, design studios, OSS maintainers\n  tone: editorial, restrained, premium\n  scale: viewport-anchored long-form single page\n  craft:\n    requires:\n      - pixel-discipline\n      - typographic-rhythm\ninputs:\n  - id: brand\n    label: Brand identity\n    description: Name, mark, tagline, location, languages, license, repo url.\n    schema_path: .\u002Fschema.ts#BrandBlock\n  - id: nav\n    label: Navigation links\n    description: Up to 5 nav entries, each with optional count badge.\n    schema_path: .\u002Fschema.ts#NavLink\n  - id: hero\n    label: Hero copy + 3 stat rings + 4-step index\n    schema_path: .\u002Fschema.ts#HeroBlock\n  - id: about\n    label: Manifesto \u002F about block\n    schema_path: .\u002Fschema.ts#AboutBlock\n  - id: capabilities\n    label: 4 capability cards\n    schema_path: .\u002Fschema.ts#CapabilitiesBlock\n  - id: labs\n    label: 5 lab cards + filter pills\n    schema_path: .\u002Fschema.ts#LabsBlock\n  - id: method\n    label: 4 method steps with thumbnails\n    schema_path: .\u002Fschema.ts#MethodBlock\n  - id: work\n    label: 2 selected-work cards on dark slab\n    schema_path: .\u002Fschema.ts#WorkBlock\n  - id: testimonial\n    label: Pull quote + author + 5 partner glyphs\n    schema_path: .\u002Fschema.ts#TestimonialBlock\n  - id: cta\n    label: Closing CTA + ribbon\n    schema_path: .\u002Fschema.ts#CTABlock\n  - id: footer\n    label: Brand description + 4 link columns + mega kicker\n    schema_path: .\u002Fschema.ts#FooterBlock\n  - id: imagery\n    label: Image strategy (generate \u002F placeholder \u002F bring-your-own)\n    schema_path: .\u002Fschema.ts#ImageryConfig\nparameters:\n  output_format:\n    type: enum\n    values: [standalone-html]\n    default: standalone-html\n    description: >\n      Writes one self-contained .html (CSS inlined, scripts inline,\n      images relative).\n  image_strategy:\n    type: enum\n    values: [generate, placeholder, bring-your-own]\n    default: placeholder\n    description: >\n      `generate` calls gpt-image-2 (fal.ai or Azure) for all 16 slots.\n      `placeholder` writes paper-textured SVG frames so the layout is\n      fully visible without an image budget. `bring-your-own` assumes\n      the user has dropped 16 PNGs at `imagery.assets_path` already.\n  image_provider:\n    type: enum\n    values: [fal, azure]\n    default: fal\n    description: \"Provider for `image_strategy: generate`. fal.ai is faster.\"\noutputs:\n  - path: \u003Cout>\u002Findex.html\n    description: Self-contained HTML with Atelier Zero CSS inlined.\n  - path: \u003Cout>\u002Fassets\u002F*.png (or *.svg)\n    description: 16 collage assets, generated or placeholder per strategy.\ncapabilities_required:\n  - file-write\n  - http-fetch        # only when image_strategy=generate\n  - node-runtime      # tsx or compatible\nexample_prompt: |\n  Build me an editorial landing page for \"Lumen Field\", an indie studio\n  shipping a soundscape app for focus. Coral accent, Berlin coordinates,\n  mention the iOS Beta TestFlight, three stats: 12 soundscapes \u002F 4\n  presets \u002F 1 daily ritual. Use the placeholder image strategy.\n---\n\n# open-design-landing\n\nBuild a single-page editorial landing site (or a slide deck — see the\nsibling [`open-design-landing-deck`](..\u002Fopen-design-landing-deck\u002F) skill)\nin the **Atelier Zero** design system: warm-paper background, Inter\nTight + Playfair Display, italic serif emphasis spans, dotted hairline\nrules, coral terminating dots, scroll-reveal motion, and 16 surreal\ncollage plates.\n\nThis is the canonical OpenDesign marketing-page recipe — the example\noutput is the very page you see at [open-design](https:\u002F\u002Fgithub.com\u002Fnexu-io\u002Fopen-design).\n\nThe skill is fully **parameterized**. The agent fills one typed\n`inputs.json` from the user's brief; the composer turns that JSON +\nthe canonical [`styles.css`](.\u002Fstyles.css) into a deployable artifact.\n\n```text\ninputs.json + styles.css                       16 image slots\n        │                                            │\n        └──────────► scripts\u002Fcompose.ts ◄────────────┘\n                            │\n                            ▼\n              \u003Cout>\u002Findex.html  (self-contained)\n              \u003Cout>\u002Fassets\u002F      (PNG or SVG)\n```\n\n---\n\n## What you get\n\nA single HTML file with **all** of:\n\n- Editorial topbar (volume \u002F issue \u002F language strip), Headroom-style\n  sticky nav with live GitHub star count.\n- 8 numbered Roman-numeral sections with paper-textured background:\n  hero (with 3 stat rings + 4-step index), about, capabilities (4 cards),\n  labs (5 cards + filter pills + progress bar), method (4 steps with\n  thumbnails), selected work (dark slab + 2 tilted cards), testimonial\n  (pull quote + 5 partner glyphs), CTA (ribbon + email pill).\n- Footer with 4 link columns + huge italic-serif kicker word.\n- Scroll-reveal motion on every section (IntersectionObserver, respects\n  `prefers-reduced-motion`).\n- Fully responsive at 1280 \u002F 1080 \u002F 880 \u002F 560 breakpoints.\n\n---\n\n## Workflow contract\n\nRun these four steps in order. The agent should **complete** each step\nbefore moving on, and prefer asking the user a focused question over\ninventing copy.\n\n### 1. Gather brand inputs\n\nUse `AskQuestion` (or the equivalent in your UI) to collect the brand\nbrief in chunks; do **not** dump the entire `schema.ts` on the user.\nMap their answers into `inputs.json` matching the typed shape.\n\nThe eight question groups, in order:\n\n| Group | Schema fields                                           | Min answers | Notes                                    |\n| :---- | :------------------------------------------------------ | :---------- | :--------------------------------------- |\n| 1     | `brand.{name,mark,tagline,description,location}`        | 5           | Mark = single glyph (Ø, ▲, ★…)           |\n| 2     | `brand.{license,version,year,primary_url,contact_email}`| 4           | URL is required; license defaults Apache-2.0 |\n| 3     | `nav[]` (up to 5)                                       | 3           | Optional count badges                     |\n| 4     | `hero.{label,headline,lead,primary,secondary,stats}`    | All         | Headline as `MixedText` (sans+em+dot)     |\n| 5     | `about` + `capabilities.cards[4]`                       | All         | 4 cards × {num,tag,title,body}            |\n| 6     | `labs.cards[5]` + `method.steps[4]`                     | All         | Both grids fixed-arity                    |\n| 7     | `work.cards[2]` + `testimonial`                         | All         | 5 partner glyphs as inline SVG path data |\n| 8     | `cta` + `footer.{columns[4],mega}`                      | All         | Mega kicker is a `MixedText` like the headlines |\n\nOpen [`inputs.example.json`](.\u002Finputs.example.json) for a complete\nworked example (OpenDesign itself).\n\n### 2. Decide the image strategy\n\n| Strategy          | When to choose                                          | Cost \u002F latency        |\n| :---------------- | :------------------------------------------------------ | :-------------------- |\n| `placeholder`     | First pass. Demo. Slide internal. No image budget yet.  | $0, \u003C1s               |\n| `generate`        | Final delivery. Brand wants original collages.          | ~$0.40, ~6 min        |\n| `bring-your-own`  | User has art direction PNGs. Drop them at `assets_path`.| $0, 0s                |\n\nSet `inputs.imagery.strategy` accordingly.\n\n#### `placeholder` — frame mode\n\n```bash\nnpx tsx scripts\u002Fplaceholder.ts \u003Cout>\u002Fassets\u002F\n```\n\nWrites 16 `.svg` files (with `.png` aliases for compatibility) into\n`\u003Cout>\u002Fassets\u002F`. Each placeholder shows the slot id, ratio, pixel\ndimensions, and the prompt hint from `image-manifest.json`. The\ncomposer's `\u003Cimg src='.\u002Fassets\u002Fhero.png'>` etc. just work.\n\n#### `generate` — gpt-image-2 mode\n\n```bash\nFAL_KEY=... npx tsx scripts\u002Fimagegen.ts \u003Cinputs.json> --out=\u003Cout>\u002Fassets\u002F\n```\n\nCalls fal.ai's `openai\u002Fgpt-image-2` synchronous endpoint per slot.\nComposes prompts as: **style anchor** (paper-collage editorial system)\n+ **brand variables** (name \u002F nav \u002F headline \u002F italic emphasis pulled\nfrom `inputs.json`) + **per-slot composition** (e.g. cropped plaster\nhead + tree growing through arch). Skips slots whose target file\nalready exists; pass `--force` to re-render.\n\nWithout `FAL_KEY`, the script prints the prompts so the operator can\nroute them through the `\u002Fgpt-image-fal` slash-command skill manually.\n\n#### `bring-your-own`\n\nDrop 16 PNGs matching `assets\u002Fimage-manifest.json` filenames at\n`inputs.imagery.assets_path`. Done.\n\n### 3. Compose the artifact\n\n```bash\nnpx tsx scripts\u002Fcompose.ts \u003Cinputs.json> \u003Cout>\u002Findex.html\n```\n\nThe composer reads `inputs.json` and `..\u002Fstyles.css`, then writes one\nself-contained HTML file. The page includes:\n\n- The full Atelier Zero stylesheet, inlined.\n- All section markup with `data-reveal` attributes for staggered\n  scroll motion.\n- Inline IntersectionObserver script for `[data-reveal]`.\n- Inline Headroom nav script (mirrors `header.tsx`).\n- Inline GitHub star-count fetcher (auto-detects from `brand.primary_url`).\n\n---\n\n## Self-check before delivering\n\nBefore marking done, the agent **must** verify:\n\n- [ ] `\u003Cout>\u002Findex.html` opens in a browser without console errors.\n- [ ] All 16 image slots load (no 404s in DevTools network tab).\n- [ ] Headline italic emphasis spans render in Playfair (not sans).\n- [ ] Coral terminating dots appear at every `display` h1\u002Fh2 end.\n- [ ] Scroll from top to bottom; every section animates in once.\n- [ ] Resize to 880px and 560px; no horizontal scroll, no overlap.\n- [ ] `prefers-reduced-motion: reduce` (DevTools → Rendering) disables\n      transitions cleanly.\n- [ ] Lighthouse: contrast AA, font-display swap, no layout shift on the\n      hero (CLS \u003C 0.05).\n\n---\n\n## Files in this skill\n\n```text\ndesign-templates\u002Fopen-design-landing\u002F\n├── SKILL.md                 # this contract\n├── README.md                # quick-start\n├── schema.ts                # typed inputs (single source of truth)\n├── styles.css               # Atelier Zero stylesheet (single source of truth)\n├── inputs.example.json      # OpenDesign as the worked example\n├── example.html             # canonical rendering (regenerated from inputs.example.json)\n├── scripts\u002F\n│   ├── compose.ts           # inputs.json + styles.css → index.html\n│   ├── imagegen.ts          # gpt-image-2 wrapper (fal.ai)\n│   └── placeholder.ts       # SVG paper-textured frames\n└── assets\u002F\n    ├── *.png                # 16 collage plates (OpenDesign instance)\n    ├── image-manifest.json  # slot → file\u002Fdimensions\u002Fprompt mapping\n    └── imagegen-prompts.md  # human-readable prompt pack\n```\n\n---\n\n## Boundaries\n\n- **Do not** invent new colors or typefaces. Tokens live in\n  `design-systems\u002Fatelier-zero\u002FDESIGN.md`; extend the design system\n  before adding a new ramp here.\n- **Do not** drop `data-reveal` attributes from generated markup.\n  Without them the page goes static and feels dead.\n- **Do not** wrap the composed HTML in a framework that injects its\n  own stylesheet ordering — Atelier Zero relies on stylesheet-order\n  cascade for paper texture and z-index of side rails.\n- **Do not** add a separate stylesheet file that reorders Atelier Zero\n  cascade; keep `styles.css` as the single visual source.\n\n## See also\n\n- [`design-systems\u002Fatelier-zero\u002FDESIGN.md`](..\u002F..\u002Fdesign-systems\u002Fatelier-zero\u002FDESIGN.md) — token spec.\n- [`design-templates\u002Fopen-design-landing-deck\u002F`](..\u002Fopen-design-landing-deck\u002F) — sibling slides skill that reuses this design system.\n","# open-design-landing\n\nBuild a single-page editorial landing site (or a slide deck — see the\nsibling [`open-design-landing-deck`](..\u002Fopen-design-landing-deck\u002F) skill)\nin the **Atelier Zero** design system: warm-paper background, Inter\nTight + Playfair Display, italic serif emphasis spans, dotted hairline\nrules, coral terminating dots, scroll-reveal motion, and 16 surreal\ncollage plates.\n\nThis is the canonical OpenDesign marketing-page recipe — the example\noutput is the very page you see at [open-design](https:\u002F\u002Fgithub.com\u002Fnexu-io\u002Fopen-design).\n\nThe skill is fully **parameterized**. The agent fills one typed\n`inputs.json` from the user's brief; the composer turns that JSON +\nthe canonical [`styles.css`](.\u002Fstyles.css) into a deployable artifact.\n\n```text\ninputs.json + styles.css                       16 image slots\n        │                                            │\n        └──────────► scripts\u002Fcompose.ts ◄────────────┘\n                            │\n                            ▼\n              \u003Cout>\u002Findex.html  (self-contained)\n              \u003Cout>\u002Fassets\u002F      (PNG or SVG)\n```\n\n---\n\n## What you get\n\nA single HTML file with **all** of:\n\n- Editorial topbar (volume \u002F issue \u002F language strip), Headroom-style\n  sticky nav with live GitHub star count.\n- 8 numbered Roman-numeral sections with paper-textured background:\n  hero (with 3 stat rings + 4-step index), about, capabilities (4 cards),\n  labs (5 cards + filter pills + progress bar), method (4 steps with\n  thumbnails), selected work (dark slab + 2 tilted cards), testimonial\n  (pull quote + 5 partner glyphs), CTA (ribbon + email pill).\n- Footer with 4 link columns + huge italic-serif kicker word.\n- Scroll-reveal motion on every section (IntersectionObserver, respects\n  `prefers-reduced-motion`).\n- Fully responsive at 1280 \u002F 1080 \u002F 880 \u002F 560 breakpoints.\n\n---\n\n## Workflow contract\n\nRun these four steps in order. The agent should **complete** each step\nbefore moving on, and prefer asking the user a focused question over\ninventing copy.\n\n### 1. Gather brand inputs\n\nUse `AskQuestion` (or the equivalent in your UI) to collect the brand\nbrief in chunks; do **not** dump the entire `schema.ts` on the user.\nMap their answers into `inputs.json` matching the typed shape.\n\nThe eight question groups, in order:\n\n| Group | Schema fields                                           | Min answers | Notes                                    |\n| :---- | :------------------------------------------------------ | :---------- | :--------------------------------------- |\n| 1     | `brand.{name,mark,tagline,description,location}`        | 5           | Mark = single glyph (Ø, ▲, ★…)           |\n| 2     | `brand.{license,version,year,primary_url,contact_email}`| 4           | URL is required; license defaults Apache-2.0 |\n| 3     | `nav[]` (up to 5)                                       | 3           | Optional count badges                     |\n| 4     | `hero.{label,headline,lead,primary,secondary,stats}`    | All         | Headline as `MixedText` (sans+em+dot)     |\n| 5     | `about` + `capabilities.cards[4]`                       | All         | 4 cards × {num,tag,title,body}            |\n| 6     | `labs.cards[5]` + `method.steps[4]`                     | All         | Both grids fixed-arity                    |\n| 7     | `work.cards[2]` + `testimonial`                         | All         | 5 partner glyphs as inline SVG path data |\n| 8     | `cta` + `footer.{columns[4],mega}`                      | All         | Mega kicker is a `MixedText` like the headlines |\n\nOpen [`inputs.example.json`](.\u002Finputs.example.json) for a complete\nworked example (OpenDesign itself).\n\n### 2. Decide the image strategy\n\n| Strategy          | When to choose                                          | Cost \u002F latency        |\n| :---------------- | :------------------------------------------------------ | :-------------------- |\n| `placeholder`     | First pass. Demo. Slide internal. No image budget yet.  | $0, \u003C1s               |\n| `generate`        | Final delivery. Brand wants original collages.          | ~$0.40, ~6 min        |\n| `bring-your-own`  | User has art direction PNGs. Drop them at `assets_path`.| $0, 0s                |\n\nSet `inputs.imagery.strategy` accordingly.\n\n#### `placeholder` — frame mode\n\n```bash\nnpx tsx scripts\u002Fplaceholder.ts \u003Cout>\u002Fassets\u002F\n```\n\nWrites 16 `.svg` files (with `.png` aliases for compatibility) into\n`\u003Cout>\u002Fassets\u002F`. Each placeholder shows the slot id, ratio, pixel\ndimensions, and the prompt hint from `image-manifest.json`. The\ncomposer's `\u003Cimg src='.\u002Fassets\u002Fhero.png'>` etc. just work.\n\n#### `generate` — gpt-image-2 mode\n\n```bash\nFAL_KEY=... npx tsx scripts\u002Fimagegen.ts \u003Cinputs.json> --out=\u003Cout>\u002Fassets\u002F\n```\n\nCalls fal.ai's `openai\u002Fgpt-image-2` synchronous endpoint per slot.\nComposes prompts as: **style anchor** (paper-collage editorial system)\n+ **brand variables** (name \u002F nav \u002F headline \u002F italic emphasis pulled\nfrom `inputs.json`) + **per-slot composition** (e.g. cropped plaster\nhead + tree growing through arch). Skips slots whose target file\nalready exists; pass `--force` to re-render.\n\nWithout `FAL_KEY`, the script prints the prompts so the operator can\nroute them through the `\u002Fgpt-image-fal` slash-command skill manually.\n\n#### `bring-your-own`\n\nDrop 16 PNGs matching `assets\u002Fimage-manifest.json` filenames at\n`inputs.imagery.assets_path`. Done.\n\n### 3. Compose the artifact\n\n```bash\nnpx tsx scripts\u002Fcompose.ts \u003Cinputs.json> \u003Cout>\u002Findex.html\n```\n\nThe composer reads `inputs.json` and `..\u002Fstyles.css`, then writes one\nself-contained HTML file. The page includes:\n\n- The full Atelier Zero stylesheet, inlined.\n- All section markup with `data-reveal` attributes for staggered\n  scroll motion.\n- Inline IntersectionObserver script for `[data-reveal]`.\n- Inline Headroom nav script (mirrors `header.tsx`).\n- Inline GitHub star-count fetcher (auto-detects from `brand.primary_url`).\n\n---\n\n## Self-check before delivering\n\nBefore marking done, the agent **must** verify:\n\n- [ ] `\u003Cout>\u002Findex.html` opens in a browser without console errors.\n- [ ] All 16 image slots load (no 404s in DevTools network tab).\n- [ ] Headline italic emphasis spans render in Playfair (not sans).\n- [ ] Coral terminating dots appear at every `display` h1\u002Fh2 end.\n- [ ] Scroll from top to bottom; every section animates in once.\n- [ ] Resize to 880px and 560px; no horizontal scroll, no overlap.\n- [ ] `prefers-reduced-motion: reduce` (DevTools → Rendering) disables\n      transitions cleanly.\n- [ ] Lighthouse: contrast AA, font-display swap, no layout shift on the\n      hero (CLS \u003C 0.05).\n\n---\n\n## Files in this skill\n\n```text\ndesign-templates\u002Fopen-design-landing\u002F\n├── SKILL.md                 # this contract\n├── README.md                # quick-start\n├── schema.ts                # typed inputs (single source of truth)\n├── styles.css               # Atelier Zero stylesheet (single source of truth)\n├── inputs.example.json      # OpenDesign as the worked example\n├── example.html             # canonical rendering (regenerated from inputs.example.json)\n├── scripts\u002F\n│   ├── compose.ts           # inputs.json + styles.css → index.html\n│   ├── imagegen.ts          # gpt-image-2 wrapper (fal.ai)\n│   └── placeholder.ts       # SVG paper-textured frames\n└── assets\u002F\n    ├── *.png                # 16 collage plates (OpenDesign instance)\n    ├── image-manifest.json  # slot → file\u002Fdimensions\u002Fprompt mapping\n    └── imagegen-prompts.md  # human-readable prompt pack\n```\n\n---\n\n## Boundaries\n\n- **Do not** invent new colors or typefaces. Tokens live in\n  `design-systems\u002Fatelier-zero\u002FDESIGN.md`; extend the design system\n  before adding a new ramp here.\n- **Do not** drop `data-reveal` attributes from generated markup.\n  Without them the page goes static and feels dead.\n- **Do not** wrap the composed HTML in a framework that injects its\n  own stylesheet ordering — Atelier Zero relies on stylesheet-order\n  cascade for paper texture and z-index of side rails.\n- **Do not** add a separate stylesheet file that reorders Atelier Zero\n  cascade; keep `styles.css` as the single visual source.\n\n## See also\n\n- [`design-systems\u002Fatelier-zero\u002FDESIGN.md`](..\u002F..\u002Fdesign-systems\u002Fatelier-zero\u002FDESIGN.md) — token spec.\n- [`design-templates\u002Fopen-design-landing-deck\u002F`](..\u002Fopen-design-landing-deck\u002F) — sibling slides skill that reuses this design system.\n",{"od":24,"name":5,"inputs":35,"outputs":86,"triggers":93,"parameters":101,"description":118,"example_prompt":119,"capabilities_required":120},{"tone":25,"craft":26,"scale":30,"surface":31,"audience":32,"category":33,"scenario":34},"editorial, restrained, premium",{"requires":27},[28,29],"pixel-discipline","typographic-rhythm","viewport-anchored long-form single page","web","founders, design studios, OSS maintainers","brand-page","marketing",[36,41,46,50,54,58,62,66,70,74,78,82],{"id":37,"label":38,"description":39,"schema_path":40},"brand","Brand identity","Name, mark, tagline, location, languages, license, repo url.",".\u002Fschema.ts#BrandBlock",{"id":42,"label":43,"description":44,"schema_path":45},"nav","Navigation links","Up to 5 nav entries, each with optional count badge.",".\u002Fschema.ts#NavLink",{"id":47,"label":48,"schema_path":49},"hero","Hero copy + 3 stat rings + 4-step index",".\u002Fschema.ts#HeroBlock",{"id":51,"label":52,"schema_path":53},"about","Manifesto \u002F about block",".\u002Fschema.ts#AboutBlock",{"id":55,"label":56,"schema_path":57},"capabilities","4 capability cards",".\u002Fschema.ts#CapabilitiesBlock",{"id":59,"label":60,"schema_path":61},"labs","5 lab cards + filter pills",".\u002Fschema.ts#LabsBlock",{"id":63,"label":64,"schema_path":65},"method","4 method steps with thumbnails",".\u002Fschema.ts#MethodBlock",{"id":67,"label":68,"schema_path":69},"work","2 selected-work cards on dark slab",".\u002Fschema.ts#WorkBlock",{"id":71,"label":72,"schema_path":73},"testimonial","Pull quote + author + 5 partner glyphs",".\u002Fschema.ts#TestimonialBlock",{"id":75,"label":76,"schema_path":77},"cta","Closing CTA + ribbon",".\u002Fschema.ts#CTABlock",{"id":79,"label":80,"schema_path":81},"footer","Brand description + 4 link columns + mega kicker",".\u002Fschema.ts#FooterBlock",{"id":83,"label":84,"schema_path":85},"imagery","Image strategy (generate \u002F placeholder \u002F bring-your-own)",".\u002Fschema.ts#ImageryConfig",[87,90],{"path":88,"description":89},"\u003Cout>\u002Findex.html","Self-contained HTML with Atelier Zero CSS inlined.",{"path":91,"description":92},"\u003Cout>\u002Fassets\u002F*.png (or *.svg)","16 collage assets, generated or placeholder per strategy.",[94,95,96,97,98,99,100],"landing page","落地页","editorial site","magazine layout","hero collage","atelier zero","open design landing",{"output_format":102,"image_provider":107,"image_strategy":112},{"type":103,"values":104,"default":105,"description":106},"enum",[105],"standalone-html","Writes one self-contained .html (CSS inlined, scripts inline, images relative).\n",{"type":103,"values":108,"default":109,"description":111},[109,110],"fal","azure","Provider for `image_strategy: generate`. fal.ai is faster.",{"type":103,"values":113,"default":115,"description":117},[114,115,116],"generate","placeholder","bring-your-own","`generate` calls gpt-image-2 (fal.ai or Azure) for all 16 slots. `placeholder` writes paper-textured SVG frames so the layout is fully visible without an image budget. `bring-your-own` assumes the user has dropped 16 PNGs at `imagery.assets_path` already.\n","Produce a world-class single-page editorial landing site in the Atelier Zero visual language (Monocle \u002F Apartamento \u002F Études editorial collage) — the same aesthetic OpenDesign uses for its own marketing surface. The agent fills a typed `inputs.json` from a brand brief, optionally generates 16 collage assets via gpt-image-2, then runs a pure-function composer that emits a self-contained HTML file. Drop-in scroll-reveal motion and a Headroom-style sticky nav are wired automatically.\n","Build me an editorial landing page for \"Lumen Field\", an indie studio\nshipping a soundscape app for focus. Coral accent, Berlin coordinates,\nmention the iOS Beta TestFlight, three stats: 12 soundscapes \u002F 4\npresets \u002F 1 daily ritual. Use the placeholder image strategy.",[121,122,123],"file-write","http-fetch","node-runtime","main","f403d5b733fab92eab16d13e9baf3ac951afed55","design-templates\u002Fopen-design-landing","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app","https:\u002F\u002Fgithub.com\u002Fhiktan44","fasheone.com","Hikmet Tanrıverdi\r\nSTRATEJI DANIŞMANLIK, 2008-2018 İHKİB İSTANBUL HAZIR GİYİM BŞK, İTO MECLİS ÜYESİ, TEXMART DIŞ TİCARET YK STRATEGY CONSULTING, 2008-2018 PRESI","2026-10-11 23:59:08",{"source":8,"skillName":5,"commands":133,"prompt":143,"zipAvailable":144},[134,137,140],{"tool":135,"command":136},"npx","npx skills add hiktan44\u002Fopen-design-app --skill open-design-landing",{"tool":138,"command":139},"bunx","bunx skills add hiktan44\u002Fopen-design-app --skill open-design-landing",{"tool":141,"command":142},"pnpm","pnpm dlx skills add hiktan44\u002Fopen-design-app --skill open-design-landing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002FSKILL.md",true,[146,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,266,270,274,280,284,288,292],{"path":147,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":150,"sourceHtmlUrl":151},"assets\u002Fabout.png","ASSET","资产文件",1921345,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fabout.png",{"path":153,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":154,"sourceHtmlUrl":155},"assets\u002Fagents\u002Fanthropic.svg",301,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fanthropic.svg",{"path":157,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":158,"sourceHtmlUrl":159},"assets\u002Fagents\u002Fdeepseek.svg",2106,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fdeepseek.svg",{"path":161,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":162,"sourceHtmlUrl":163},"assets\u002Fagents\u002Fgemini.svg",421,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fgemini.svg",{"path":165,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":166,"sourceHtmlUrl":167},"assets\u002Fagents\u002Fminimax.svg",397,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fminimax.svg",{"path":169,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":170,"sourceHtmlUrl":171},"assets\u002Fagents\u002Fmoonshot.svg",280,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fmoonshot.svg",{"path":173,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":174,"sourceHtmlUrl":175},"assets\u002Fagents\u002Fopenai.svg",1591,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fopenai.svg",{"path":177,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":178,"sourceHtmlUrl":179},"assets\u002Fagents\u002Fqwen.svg",825,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fqwen.svg",{"path":181,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":182,"sourceHtmlUrl":183},"assets\u002Fagents\u002Fxai.svg",309,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fxai.svg",{"path":185,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":186,"sourceHtmlUrl":187},"assets\u002Fagents\u002Fxiaomi.svg",279,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fxiaomi.svg",{"path":189,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":190,"sourceHtmlUrl":191},"assets\u002Fagents\u002Fzhipu.svg",270,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fagents\u002Fzhipu.svg",{"path":193,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":194,"sourceHtmlUrl":195},"assets\u002Fcapabilities.png",1890771,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fcapabilities.png",{"path":197,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":198,"sourceHtmlUrl":199},"assets\u002Fcta.png",1975780,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fcta.png",{"path":201,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":202,"sourceHtmlUrl":203},"assets\u002Fhero.png",2058917,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fhero.png",{"path":205,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":206,"sourceHtmlUrl":207},"assets\u002Fimage-manifest.json",3973,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fimage-manifest.json",{"path":209,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":210,"sourceHtmlUrl":211},"assets\u002Fimagegen-prompts.md",9931,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fimagegen-prompts.md",{"path":213,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":214,"sourceHtmlUrl":215},"assets\u002Flab-1.png",1299830,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Flab-1.png",{"path":217,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":218,"sourceHtmlUrl":219},"assets\u002Flab-2.png",1345317,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Flab-2.png",{"path":221,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":222,"sourceHtmlUrl":223},"assets\u002Flab-3.png",1321595,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Flab-3.png",{"path":225,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":226,"sourceHtmlUrl":227},"assets\u002Flab-4.png",1246617,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Flab-4.png",{"path":229,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":230,"sourceHtmlUrl":231},"assets\u002Flab-5.png",1170933,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Flab-5.png",{"path":233,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":234,"sourceHtmlUrl":235},"assets\u002Fmethod-1.png",1107903,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fmethod-1.png",{"path":237,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":238,"sourceHtmlUrl":239},"assets\u002Fmethod-2.png",1142158,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fmethod-2.png",{"path":241,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":242,"sourceHtmlUrl":243},"assets\u002Fmethod-3.png",1006205,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fmethod-3.png",{"path":245,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":246,"sourceHtmlUrl":247},"assets\u002Fmethod-4.png",1017476,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fmethod-4.png",{"path":249,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":250,"sourceHtmlUrl":251},"assets\u002Ftestimonial.png",1737581,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Ftestimonial.png",{"path":253,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":254,"sourceHtmlUrl":255},"assets\u002Fwork-1.png",1231123,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fwork-1.png",{"path":257,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":258,"sourceHtmlUrl":259},"assets\u002Fwork-2.png",1369134,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fassets\u002Fwork-2.png",{"path":261,"resourceType":262,"resourceTypeDesc":263,"sizeBytes":264,"sourceHtmlUrl":265},"example.html","REFERENCE","参考文档",110903,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fexample.html",{"path":267,"resourceType":262,"resourceTypeDesc":263,"sizeBytes":268,"sourceHtmlUrl":269},"inputs.example.json",20220,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Finputs.example.json",{"path":271,"resourceType":262,"resourceTypeDesc":263,"sizeBytes":272,"sourceHtmlUrl":273},"README.md",4919,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002FREADME.md",{"path":275,"resourceType":276,"resourceTypeDesc":277,"sizeBytes":278,"sourceHtmlUrl":279},"schema.ts","SCRIPT","脚本",13351,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fschema.ts",{"path":281,"resourceType":276,"resourceTypeDesc":277,"sizeBytes":282,"sourceHtmlUrl":283},"scripts\u002Fcompose.ts",29624,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fscripts\u002Fcompose.ts",{"path":285,"resourceType":276,"resourceTypeDesc":277,"sizeBytes":286,"sourceHtmlUrl":287},"scripts\u002Fimagegen.ts",14028,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fscripts\u002Fimagegen.ts",{"path":289,"resourceType":276,"resourceTypeDesc":277,"sizeBytes":290,"sourceHtmlUrl":291},"scripts\u002Fplaceholder.ts",7753,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fscripts\u002Fplaceholder.ts",{"path":293,"resourceType":294,"resourceTypeDesc":295,"sizeBytes":296,"sourceHtmlUrl":297},"styles.css","OTHER","其他",50645,"https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fdesign-templates\u002Fopen-design-landing\u002Fstyles.css",[299,306,313,320,327,336],{"skillNo":300,"name":301,"nameZh":6,"description":302,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":303,"categories":304,"keywords":305,"publishedAt":19},"01M77WGV99HNV3Q6JN3H8Z70JE","Beta Skill","Instruction-only fixture skill.","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Ftools\u002Frelease\u002Ftests\u002Ffixtures\u002Fcatalog\u002Fskills\u002Fbeta\u002FSKILL.md",[],[],{"skillNo":307,"name":308,"nameZh":6,"description":309,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":310,"categories":311,"keywords":312,"publishedAt":19},"01M77WGRXNRGHT9J1K929BPV5H","Alpha Skill","First fixture skill with a runnable demo.","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Ftools\u002Frelease\u002Ftests\u002Ffixtures\u002Fcatalog\u002Fskills\u002Falpha\u002FSKILL.md",[],[],{"skillNo":314,"name":315,"nameZh":6,"description":316,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":317,"categories":318,"keywords":319,"publishedAt":19},"01M77WGQK7F7R1W6RBFZFEZ53M","Deck One","A small deck template fixture.","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Ftools\u002Frelease\u002Ftests\u002Ffixtures\u002Fcatalog\u002Fdesign-templates\u002Fdeck-one\u002FSKILL.md",[],[],{"skillNo":321,"name":322,"nameZh":6,"description":323,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":324,"categories":325,"keywords":326,"publishedAt":19},"01M77WGNPEGTDWMKDX659FS5DT","youtube-clipper","YouTube clip generation and editing with automated workflows — pull source video, slice highlights, add captions, and export.","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-clipper\u002FSKILL.md",[],[],{"skillNo":328,"name":329,"nameZh":6,"description":330,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":331,"licenseFileUrl":332,"sourceHtmlUrl":333,"categories":334,"keywords":335,"publishedAt":19},"01M77WGJ9KKT6Q4P10GAV3KC48","writing-guidelines","Review docs\u002Fprose for Writing Guidelines compliance. Use when asked to \"review my docs\", \"check writing style\", \"audit prose\", \"review docs voice and tone\", or \"check this page against the writing handbook\".","MIT","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fskills\u002Fwriting-guidelines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fskills\u002Fwriting-guidelines\u002FSKILL.md",[],[],{"skillNo":337,"name":338,"nameZh":6,"description":339,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":340,"categories":341,"keywords":342,"publishedAt":19},"01M77WGF9P0WT4XBXMM0B9WRGR","wpds","WordPress Design System. Apply WordPress's official design tokens, typography, and component patterns to themes and sites.","https:\u002F\u002Fgithub.com\u002Fhiktan44\u002Fopen-design-app\u002Fblob\u002Fmain\u002Fskills\u002Fwpds\u002FSKILL.md",[],[]]