From 725e612e9e1a59a43cbd8d15f427f3895b366533 Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Wed, 8 Jul 2026 16:42:37 -0700 Subject: [PATCH 1/2] feat: bundle shared design tokens --- scripts/docs-site/assets.mjs | 12 ++++++++++-- scripts/docs-site/smoke.mjs | 5 ++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/scripts/docs-site/assets.mjs b/scripts/docs-site/assets.mjs index 19e2003d15..f6f34e0068 100644 --- a/scripts/docs-site/assets.mjs +++ b/scripts/docs-site/assets.mjs @@ -1,11 +1,19 @@ import fs from "node:fs"; const maturityCss = fs.readFileSync(new URL("./maturity.css", import.meta.url), "utf8"); +const designSystemCss = [ + "@openclaw/design-system/tokens.css", + "@openclaw/design-system/themes.css", + "@openclaw/design-system/typography.css", +] + .map((specifier) => fs.readFileSync(new URL(import.meta.resolve(specifier)), "utf8")) + .join("\n"); export function siteCss() { return ` -:root{--bg:#101012;--paper:#19191c;--paper-2:#202024;--ink:#ededed;--text:#bcbcc4;--muted:#9a9aa2;--line:#232327;--line-strong:#2f2f34;--soft:#33211d;--brand:#f5654a;--brand-2:#b23a28;--accent-2:#4fc8ae;--on-brand:#101012;--code:#141416;--code-inline:#232328;--code-block:#0e0e10;--code-text:#e9e9ee;--code-border:#2a2a30;--code-shadow:0 18px 56px rgba(0,0,0,.30);--tok-comment:#7e7e88;--tok-command:#ff8f78;--tok-option:#79c0ff;--tok-string:#8fd4bd;--tok-literal:#d2a8ff;--tok-key:#f2a37c;--tok-number:#79c0ff;--tok-punct:#8b949e;--shadow:0 20px 70px rgba(0,0,0,.34);color-scheme:dark} -:root[data-theme="light"]{--bg:#f6f5f3;--paper:#ffffff;--paper-2:#f0eeea;--ink:#17171a;--text:#46464e;--muted:#63636c;--line:#e3e1dc;--line-strong:#cfccc5;--soft:#fae8e3;--brand:#d84a31;--brand-2:#9c3222;--accent-2:#14806e;--on-brand:#ffffff;--code:#f2f0ec;--code-inline:#ecebe6;--code-block:#fffefc;--code-text:#26262c;--code-border:#dbd8d1;--code-shadow:none;--tok-comment:#6d6d77;--tok-command:#bb3f28;--tok-option:#2365a8;--tok-string:#0f6355;--tok-literal:#7b3fb4;--tok-key:#a63c22;--tok-number:#1a5fb4;--tok-punct:#75707a;--shadow:0 20px 70px rgba(23,23,26,.10);color-scheme:light} +${designSystemCss} +:root{--bg:var(--oc-bg-page);--paper:var(--oc-bg-surface);--paper-2:var(--oc-bg-elevated);--ink:var(--oc-text-primary);--text:var(--oc-text-secondary);--muted:var(--oc-text-muted);--line:#232327;--line-strong:#2f2f34;--soft:#33211d;--brand:var(--oc-accent-primary);--brand-2:var(--oc-accent-primary-deep);--accent-2:var(--oc-accent-secondary);--on-brand:var(--oc-text-on-accent);--code:#141416;--code-inline:#232328;--code-block:#0e0e10;--code-text:#e9e9ee;--code-border:#2a2a30;--code-shadow:0 18px 56px rgba(0,0,0,.30);--tok-comment:#7e7e88;--tok-command:#ff8f78;--tok-option:#79c0ff;--tok-string:#8fd4bd;--tok-literal:#d2a8ff;--tok-key:#f2a37c;--tok-number:#79c0ff;--tok-punct:#8b949e;--shadow:0 20px 70px rgba(0,0,0,.34);color-scheme:dark} +:root[data-theme="light"]{--paper:var(--oc-bg-elevated);--paper-2:#f0eeea;--line:#e3e1dc;--line-strong:#cfccc5;--soft:#fae8e3;--code:#f2f0ec;--code-inline:#ecebe6;--code-block:#fffefc;--code-text:#26262c;--code-border:#dbd8d1;--code-shadow:none;--tok-comment:#6d6d77;--tok-command:#bb3f28;--tok-option:#2365a8;--tok-string:#0f6355;--tok-literal:#7b3fb4;--tok-key:#a63c22;--tok-number:#1a5fb4;--tok-punct:#75707a;--shadow:0 20px 70px rgba(23,23,26,.10);color-scheme:light} :root{--tooltip-bg:#ededed;--tooltip-text:#17171a;--tooltip-border:#ededed;--sticky-header-h:121px}:root[data-theme="light"]{--tooltip-bg:#17171a;--tooltip-text:#f6f5f3;--tooltip-border:#17171a} .oc-table-wrap{max-width:100%;overflow:auto;margin:22px 0 28px;border:1px solid var(--line-strong);border-radius:0;background:color-mix(in srgb,var(--paper) 72%,transparent)}.doc .oc-table{margin:0;width:100%;min-width:560px;border-collapse:separate;border-spacing:0;font-size:13px}.doc .oc-table th,.doc .oc-table td{border:0;border-bottom:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top;overflow-wrap:anywhere;word-break:break-word}.doc .oc-table th{position:sticky;top:0;background:color-mix(in srgb,var(--paper-2) 86%,var(--soft) 14%);color:var(--ink);font:780 12px/1.35 Switzer,ui-sans-serif,system-ui,sans-serif}.doc .oc-table tr:last-child td{border-bottom:0}.doc .oc-table td:first-child{color:var(--ink);font-weight:720}.oc-lead{margin:18px 0 28px;color:var(--text);font:500 17px/1.72 Switzer,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.oc-lead p{margin:0}.oc-pullquote{margin:30px 0;padding:3px 0 3px 24px;border-left:3px solid var(--brand);color:var(--ink)}.oc-pullquote blockquote{margin:0;padding:0;border:0;font:400 21px/1.55 Sentient,Georgia,serif;font-style:italic}.oc-pullquote figcaption{margin-top:10px;color:var(--muted);font-size:12px}.oc-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr));gap:12px;margin:24px 0}.oc-stat{border:1px solid var(--line-strong);border-radius:0;background:color-mix(in srgb,var(--paper) 72%,transparent);padding:15px 16px}.oc-stat strong{display:block;color:var(--ink);font:780 24px/1 Switzer,ui-sans-serif,system-ui,sans-serif;margin:0 0 8px}.oc-stat>span{display:block;color:var(--muted);font-size:12px;line-height:1.35}.oc-stat-delta{display:inline-block!important;width:max-content;margin-top:10px;padding:2px 7px;border:1px solid color-mix(in srgb,var(--brand) 35%,var(--line-strong));border-radius:2px;background:color-mix(in srgb,var(--brand) 10%,var(--paper));color:var(--brand)!important}.oc-stat div p{margin:.8em 0 0}.oc-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:end;margin:32px 0;padding:22px;border:1px solid color-mix(in srgb,var(--brand) 34%,var(--line-strong));border-radius:0;background:linear-gradient(135deg,color-mix(in srgb,var(--paper) 82%,var(--brand) 18%),color-mix(in srgb,var(--paper-2) 92%,transparent));box-shadow:var(--shadow)}.oc-cta-copy>span{display:block;color:var(--brand);font:780 12px/1.2 Switzer,ui-sans-serif,system-ui,sans-serif;margin:0 0 7px}.oc-cta-copy strong{display:block;color:var(--ink);font:780 19px/1.28 Switzer,ui-sans-serif,system-ui,sans-serif;margin:0 0 8px}.oc-cta-copy p{margin:0;color:var(--text)}.oc-cta-actions{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.oc-cta-link{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:10px 20px;border:1px solid var(--line-strong);border-radius:0;font:600 13px/1 ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;transition:background .16s ease,border-color .16s ease,color .16s ease,filter .16s ease}.oc-cta-link-primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.oc-cta-link-secondary{background:color-mix(in srgb,var(--paper) 78%,transparent);color:var(--ink)}.oc-cta-link:after{content:"→";margin-left:8px}.oc-cta-link:hover{filter:brightness(1.04)}.oc-cta-link-primary:hover{background:color-mix(in srgb,var(--brand) 86%,white 14%);border-color:color-mix(in srgb,var(--brand) 86%,white 14%);color:var(--on-brand)}.oc-cta-link-secondary:hover{background:color-mix(in srgb,var(--soft) 62%,var(--paper) 38%);border-color:color-mix(in srgb,var(--brand) 44%,var(--line-strong));color:var(--ink)}.oc-cta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:14px;margin:24px 0}.oc-cta-card{display:block;min-height:160px;border:1px solid var(--line-strong);border-radius:0;background:color-mix(in srgb,var(--paper) 78%,transparent);padding:18px 20px;color:var(--text);transition:border-color .16s ease,background .16s ease}.oc-cta-card:hover,.oc-cta-card:focus-visible{border-color:var(--brand);background:color-mix(in srgb,var(--soft) 38%,transparent);outline:0}.oc-cta-card .oc-card-icon{margin-bottom:14px}.oc-cta-card strong{display:block;color:var(--ink);font:760 16px/1.3 Switzer,ui-sans-serif,system-ui,sans-serif;margin:0 0 4px}.oc-cta-kicker{display:block;color:var(--brand);font:760 12px/1.35 Switzer,ui-sans-serif,system-ui,sans-serif;margin:0 0 9px}.oc-cta-card p{margin:0 0 14px;color:var(--muted)}.oc-cta-card .oc-cta-actions{margin-top:16px}.oc-chart{margin:28px 0;padding:16px;border:1px solid var(--line-strong);border-radius:0;background:color-mix(in srgb,var(--paper) 76%,transparent)}.oc-chart figcaption{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin:0 0 16px}.oc-chart figcaption strong{color:var(--ink);font:780 15px/1.25 Switzer,ui-sans-serif,system-ui,sans-serif}.oc-chart figcaption span{color:var(--muted);font-size:12px}.oc-chart-bars{display:grid;gap:10px}.oc-chart-row{display:grid;grid-template-columns:minmax(86px,150px) minmax(120px,1fr) auto;gap:10px;align-items:center}.oc-chart-row>span{color:var(--text);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-chart-row strong{color:var(--ink);font:760 12px/1 Switzer,ui-sans-serif,system-ui,sans-serif}.oc-chart-track{height:10px;border-radius:0;background:color-mix(in srgb,var(--line-strong) 62%,transparent);overflow:hidden}.oc-chart-track i{display:block;width:var(--oc-chart-value);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand-2),var(--brand))}.oc-chart-line-wrap{display:grid;gap:10px}.oc-chart-line-svg{display:block;width:100%;height:auto;overflow:visible}.oc-chart-line-svg polyline{fill:none;stroke:var(--brand);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.oc-chart-line-svg circle{fill:var(--paper);stroke:var(--brand);stroke-width:3}.oc-chart-gridline{stroke:var(--line-strong);stroke-width:1}.oc-chart-axis{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:11px}.oc-chart-axis span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-chart-data{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important}@media(max-width:820px){.oc-cta{grid-template-columns:1fr}.oc-chart-row{grid-template-columns:minmax(74px,110px) minmax(90px,1fr) auto}.doc .oc-table{min-width:0;table-layout:fixed}} *{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:120px}body{margin:0;display:flex;flex-direction:column;min-height:100vh;background:var(--bg);color:var(--text);font:15px/1.7 Switzer,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}::selection{background:var(--brand);color:var(--on-brand)}a{color:inherit;text-decoration:none}a:hover{color:var(--ink)}img{max-width:100%;height:auto}button,input,select{font:inherit}.hidden{display:none!important}.oc-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}:root[data-theme="dark"] .dark\\:hidden{display:none!important}:root[data-theme="dark"] .dark\\:block{display:block!important}:root[data-theme="light"] .dark\\:block{display:none!important} diff --git a/scripts/docs-site/smoke.mjs b/scripts/docs-site/smoke.mjs index 6098ce3100..806f5609b0 100644 --- a/scripts/docs-site/smoke.mjs +++ b/scripts/docs-site/smoke.mjs @@ -365,7 +365,10 @@ if (!/\.nav-section h2\{[^}]*ui-monospace[^}]*text-transform:uppercase/.test(sit || !/\.toc h2\{[^}]*ui-monospace[^}]*text-transform:uppercase/.test(siteCss)) { throw new Error("assets: mono label accents drifted from the reference skin"); } -if (!/--bg:#101012;--paper:#19191c;--paper-2:#202024;[^}]*--soft:#33211d/.test(siteCss) +if (!/--oc-palette-ink-950:\s*#101012/.test(siteCss) + || !/--bg:var\(--oc-bg-page\);--paper:var\(--oc-bg-surface\);--paper-2:var\(--oc-bg-elevated\)/.test(siteCss) + || !/--brand:var\(--oc-accent-primary\);--brand-2:var\(--oc-accent-primary-deep\)/.test(siteCss) + || !/--soft:#33211d/.test(siteCss) || !/\.nav-link\.active\{border-left-color:var\(--brand\);color:var\(--brand\);font-weight:650\}/.test(siteCss)) { throw new Error("assets: dark sidebar surface is not reference-aligned"); } From a772a7905eb29087c021ad74e2e4119bf0f4445e Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Wed, 8 Jul 2026 20:58:18 -0700 Subject: [PATCH 2/2] chore: pin design system to v0.0.1 --- .../references/report-format.md | 2 +- .../skills/openclaw-design-system/SKILL.md | 15 +++++++++------ .../references/consumer-adapters.md | 8 +++++--- .../references/tokens.md | 19 ++++++++++++++----- package-lock.json | 6 +++--- package.json | 4 ++-- skills-lock.json | 14 +++++++------- 7 files changed, 41 insertions(+), 27 deletions(-) diff --git a/.agents/skills/openclaw-design-audit/references/report-format.md b/.agents/skills/openclaw-design-audit/references/report-format.md index 506336c82a..225a179387 100644 --- a/.agents/skills/openclaw-design-audit/references/report-format.md +++ b/.agents/skills/openclaw-design-audit/references/report-format.md @@ -6,7 +6,7 @@ Produce both `design-audit.json` and `design-audit.md`. ```json { - "designSystemVersion": "v0.0.3", + "designSystemVersion": "v0.0.1", "consumerSha": "", "summary": { "errors": 0, diff --git a/.agents/skills/openclaw-design-system/SKILL.md b/.agents/skills/openclaw-design-system/SKILL.md index c900deedc6..2b6677e6c8 100644 --- a/.agents/skills/openclaw-design-system/SKILL.md +++ b/.agents/skills/openclaw-design-system/SKILL.md @@ -5,8 +5,8 @@ description: Build or modify OpenClaw application UI using canonical semantic to # OpenClaw Design System -Use the shared package for foundations and the consumer repository for product -components and layouts. +Use the shared package for foundations and framework-neutral visual primitives. +Keep consumer-specific behavior, data, routes, and layout composition local. ## Workflow @@ -20,19 +20,22 @@ components and layouts. ## Interface Rules - Import the complete CSS contract or its focused exported entry points. +- Compose shared classes from `components.css` before adding a one-off visual implementation. - Use local shared primitives before raw controls or one-off component implementations. - Keep one primary action per decision area. - Use familiar icons for icon-only commands and provide accessible names. - Use status colors for status, warning, success, error, and informational meaning. - Keep cards, controls, and repeated fixed-format elements dimensionally stable. - Avoid nested decorative cards and page sections styled as floating cards. -- Use an 8px maximum default radius unless a documented consumer pattern requires otherwise. +- Keep surfaces, controls, and insets square through their semantic radius tokens. +- Reserve round geometry for avatars, status dots, and other truly circular indicators. - Keep focus, hover, active, disabled, loading, and invalid states coherent. - Keep text within its container at supported viewport sizes. - Prefer dense, scan-friendly composition for operational product surfaces. ## Ownership -Move an implementation into this repository only when at least two consumers need -the same interface and behavior. Token aliases and thin framework adapters are -shared; application components remain local by default. +Move visual implementation into this repository when its interface is +framework-neutral and useful across consumers. Keep runtime behavior and +framework adapters local until at least two consumers need the same interface +and behavior. diff --git a/.agents/skills/openclaw-design-system/references/consumer-adapters.md b/.agents/skills/openclaw-design-system/references/consumer-adapters.md index c2bdb29787..bfa8ac0b03 100644 --- a/.agents/skills/openclaw-design-system/references/consumer-adapters.md +++ b/.agents/skills/openclaw-design-system/references/consumer-adapters.md @@ -9,7 +9,7 @@ Use the complete contract when the global reset is desired: ``` For a controlled migration, import `tokens.css`, `themes.css`, and -`typography.css`, then retain consumer-specific base and component CSS. +`typography.css`, then `components.css`. Retain consumer-specific layout CSS. Theme switching remains application-owned. The canonical public-site selector is `html[data-theme="light"|"dark"]`. @@ -21,13 +21,15 @@ Import in this order: @import "@openclaw/design-system/tokens.css"; @import "@openclaw/design-system/themes.css"; @import "@openclaw/design-system/typography.css"; +@import "@openclaw/design-system/components.css"; @import "@openclaw/design-system/themes/product.css"; @import "@openclaw/design-system/compat/clawhub.css"; @import "@openclaw/design-system/tailwind.css"; ``` -The Tailwind adapter exposes theme utilities; it does not add components. Keep -Radix, React, route, and product primitives in the consumer. +The Tailwind adapter exposes theme utilities. `components.css` provides +framework-neutral classes; keep Radix, React, route, and product behavior in the +consumer. The ClawHub compatibility adapter understands: diff --git a/.agents/skills/openclaw-design-system/references/tokens.md b/.agents/skills/openclaw-design-system/references/tokens.md index 9663b658f1..32303f2256 100644 --- a/.agents/skills/openclaw-design-system/references/tokens.md +++ b/.agents/skills/openclaw-design-system/references/tokens.md @@ -10,6 +10,7 @@ exports when the consumer must control reset and adapter order. | Palette | `--oc-palette-*` | Fixed source colors; rare direct use | | Semantic | `--oc-bg-*`, `--oc-text-*`, `--oc-accent-*` | Theme-aware UI intent | | Scale | `--oc-space-*`, `--oc-font-size-*`, `--oc-radius-*` | Shared dimensions | +| Motion | `--oc-duration-*`, `--oc-ease-*` | Shared interaction timing | | Product | `--oc-status-*`, `--oc-input-*`, `--oc-diff-*` | Opt-in operational UI | | Consumer alias | Unprefixed legacy names | Migration compatibility only | @@ -32,11 +33,19 @@ new shared semantic token only when the same intent recurs across consumers. ## Radius -The shared default is `--oc-radius-md` (8px). Larger radii require an existing -consumer pattern or a clear content reason. Pills are reserved for compact -status, filtering, or segmented-control semantics. +Use semantic geometry roles in product UI: + +- `--oc-radius-surface`: cards, panels, and framed sections +- `--oc-radius-control`: buttons, fields, chips, and segmented controls +- `--oc-radius-inset`: nested interactive or decorative surfaces +- `--oc-radius-round`: avatars, status dots, and genuinely circular indicators + +The first three roles are square in the canonical OpenClaw system. Raw +`--oc-radius-*` scale values remain available for documented exceptions, but +must not replace the semantic defaults. ## Ownership -Consumer repositories own component geometry, page layout, and application -states. This package owns stable visual foundations and thin migration aliases. +Consumer repositories own page composition and application states. This package +owns stable visual foundations, framework-neutral component primitives, and +thin migration aliases. diff --git a/package-lock.json b/package-lock.json index 7cd3c645b7..f25efb0926 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "openclaw-docs-site", "dependencies": { - "@openclaw/design-system": "github:openclaw/design-system#v0.0.3" + "@openclaw/design-system": "github:openclaw/design-system#v0.0.1" }, "devDependencies": { "@resvg/resvg-js": "^2.6.2", @@ -77,8 +77,8 @@ } }, "node_modules/@openclaw/design-system": { - "version": "0.0.3", - "resolved": "git+ssh://git@github.com/openclaw/design-system.git#35c800b212fa0f8377012c2db70125f1babb74e9", + "version": "0.0.1", + "resolved": "git+ssh://git@github.com/openclaw/design-system.git#7b097d79eef6e9a0a4632f72727ac7450f07a1f2", "license": "MIT", "engines": { "bun": ">=1.3.0" diff --git a/package.json b/package.json index 0791272ed4..bc853f7081 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "docs:smoke:shell": "DOCS_SITE_ARTIFACT_MODE=shell node scripts/docs-site/smoke.mjs", "docs:visual": "node scripts/docs-site/visual-smoke.mjs", "docs:check": "npm run docs:build && npm run docs:smoke && npm run docs:visual && node --check scripts/docs-site/llms-full.mjs", - "skills:install": "npm exec --yes --package=skills@1.5.15 -- skills add 'git@github.com:openclaw/design-system.git#v0.0.3' --skill '*' --agent codex --copy --yes --full-depth", + "skills:install": "npm exec --yes --package=skills@1.5.15 -- skills add 'git@github.com:openclaw/design-system.git#v0.0.1' --skill '*' --agent codex --copy --yes --full-depth", "test": "node --test scripts/docs-site/frontmatter.test.mjs" }, "devDependencies": { @@ -30,6 +30,6 @@ "yaml": "2.9.0" }, "dependencies": { - "@openclaw/design-system": "github:openclaw/design-system#v0.0.3" + "@openclaw/design-system": "github:openclaw/design-system#v0.0.1" } } diff --git a/skills-lock.json b/skills-lock.json index 1feacf569e..696022f620 100644 --- a/skills-lock.json +++ b/skills-lock.json @@ -3,35 +3,35 @@ "skills": { "openclaw-brand": { "source": "git@github.com:openclaw/design-system.git", - "ref": "v0.0.3", + "ref": "v0.0.1", "sourceType": "git", "skillPath": "openclaw-brand/SKILL.md", "computedHash": "d4bf50bb9d512dbfbcd4abde7a75d8399b0187ca9486dd7854844aab0cd02e6a" }, "openclaw-design": { "source": "git@github.com:openclaw/design-system.git", - "ref": "v0.0.3", + "ref": "v0.0.1", "sourceType": "git", "skillPath": "SKILL.md", "computedHash": "8de963d26ec19a920da5e2a5d029764bba7c941d5cb051c67a877d0e5d91c6a4" }, "openclaw-design-audit": { "source": "git@github.com:openclaw/design-system.git", - "ref": "v0.0.3", + "ref": "v0.0.1", "sourceType": "git", "skillPath": "openclaw-design-audit/SKILL.md", - "computedHash": "8cd4a597e67e6687e683924b0c1889f06d773340787681e168eceda1da35a9c3" + "computedHash": "12fec90fd4aa1aa569de1beb5a3c85d06887a5e548704dbd094355edc0f52ad3" }, "openclaw-design-system": { "source": "git@github.com:openclaw/design-system.git", - "ref": "v0.0.3", + "ref": "v0.0.1", "sourceType": "git", "skillPath": "openclaw-design-system/SKILL.md", - "computedHash": "0078deaff141b1685c4b74811f785e47c21089741c0538b7559b87d4cb25adb4" + "computedHash": "475604f08f37186237fa62605fbfe16ea04367af81f4c3a8c59bcb395ae70cca" }, "openclaw-marketing-pages": { "source": "git@github.com:openclaw/design-system.git", - "ref": "v0.0.3", + "ref": "v0.0.1", "sourceType": "git", "skillPath": "openclaw-marketing-pages/SKILL.md", "computedHash": "7da44d258d5a1e87b26535effa13cf20931fd04a884fd95225a4ff603932ef84"