Install
openclaw skills install edic-design-systemGenerate UI components, full pages, documents, emails, and assets that strictly follow the EDIC design system (Editorial × Olive Green, OKLch tokens, dark-mode ready, CJK-optimized). Use this skill whenever the user asks to build, style, or refactor anything for EDIC, or explicitly requests the EDIC / "editorial olive" design system. Output token-driven, accessible, framework-agnostic HTML/CSS.
openclaw skills install edic-design-systemWhen this skill is active, every visual artifact you produce — components, pages, landing sections, documentation, emails, reports — must conform to the EDIC design system. Prefer design tokens (CSS custom properties). Never hard-code magic numbers.
color-mix(in oklch, …).var(--ds-*) tokens for every visual value. No hard-coded #fff / 16px.#000 — use warm grey oklch(15% 0.008 75).ds-btn / ds-btn--primary.style= except genuinely dynamic values (e.g. stagger --d).aria-label; decorative SVGs need aria-hidden="true".Light (:root):
--ds-color-bg: oklch(97% 0.012 80) /* warm paper background */
--ds-color-surface: oklch(99% 0.005 80)
--ds-color-surface-raised: oklch(100% 0 0) /* popovers / modals */
--ds-color-border: oklch(89% 0.012 80)
--ds-color-muted: oklch(48% 0.015 60) /* secondary text */
--ds-color-fg: oklch(20% 0.02 60) /* body text */
--ds-color-fg-strong: oklch(14% 0.025 60) /* headings */
Olive ramp --ds-color-olive-50…900; accent:
--ds-color-olive-400: oklch(52% 0.08 115) /* === --ds-accent === */
--ds-accent-hover: var(--ds-color-olive-500)
--ds-accent-soft: var(--ds-color-olive-100)
Semantic (each has a -bg tint): success oklch(55% 0.1 145),
warning oklch(65% 0.1 85), error oklch(50% 0.14 30), info oklch(55% 0.08 240).
Dark ([data-theme="dark"]): base oklch(15% 0.008 75), body oklch(84% 0.008 72),
accent oklch(57% 0.065 115).
--ds-font-display: "Iowan Old Style","Charter",Georgia,"Noto Serif SC",serif
--ds-font-body / --ds-font-ui: "Noto Sans SC",-apple-system,system-ui,sans-serif
--ds-font-mono: "JetBrains Mono","IBM Plex Mono",monospace
Scale (rem): caption .75 · body-sm .875 · body 1 · body-lg 1.125 · lead 1.25 · h4 1.5 · h3 1.875 · h2 2.25 · h1 3 · display 3.75 · hero 4.5.
--ds-leading-tight (1.1) + --ds-tracking-tight (-0.01em).--ds-space-1..32 (4→128px).--ds-shadow-xs..2xl.--ds-duration-150..500; ease --ds-ease-out: cubic-bezier(.16,1,.3,1),
--ds-ease-spring. Always honor prefers-reduced-motion: reduce.ds-wrapper ds-section (--alt/--tight) ds-stack (--sm/--lg) ds-cluster (--center) ds-prose ds-flex-rowds-grid-2 ds-grid-3 ds-grid-4 ds-grid-6 ds-grid-icons ds-feature-gridds-section-head (--center) ds-section-headerds-mt-* ds-mb-* ds-pt-0 ds-gap-16 ds-mx-auto ds-items-center ds-justify-startds-spacing-vis ds-spacing-block ds-radius-vis ds-shadow-visds-btn + --primary/--secondary/--ghost + --sm/--lgds-icon-btnds-copy-btn (--light)ds-card + --hoverable/--flatds-glass-card (--sm/--lg) ds-glass-meta ds-glass-demo-bgds-component-preview ds-component-group ds-component-labelds-input (--error) ds-label ds-hint ds-select ds-checkbox ds-radio ds-toggle (--track/--thumb)ds-form-input ds-form-textarea ds-form-select ds-form-row ds-form-group ds-form-label ds-form-checkbox ds-form-hint (--error) ds-form-submit ds-form-requiredds-badge (--default/--accent/--success/--warning/--error)ds-alert (--info/--success/--warning/--error) ds-alert-icon ds-alert-titleds-toast (--error/--success/--warning) ds-toast-group ds-toast-icon ds-toast-text ds-toast-closeds-navbar (--scrolled) ds-navbar-inner ds-navbar-brand ds-navbar-links ds-navbar-link (--active) ds-navbar-actions ds-navbar-cta ds-navbar-icon-linkds-mnav-trigger ds-mnav-trigger-bar ds-mnav-backdropds-pagenav (--rail/--hidden) ds-pagenav-disclosure ds-pagenav-summary ds-pagenav-chevron ds-pagenav-list ds-pagenav-link (--active) ds-pagenav-num ds-pagenav-textds-tabs ds-tab (--active) ds-tab-content (--active)ds-breadcrumb ds-breadcrumb-current ds-breadcrumb-sepds-pagination ds-page-btn (--active)ds-nav ds-nav-item (--active) ds-nav-icon ds-nav-section-labelds-frosted-navds-theme-toggle-btn (--fixed)ds-table ds-table-wrap ds-table-mini ds-table-mini-rowds-progress ds-progress-bar ds-progress-fill ds-progress-labelds-avatar (--sm/--lg)ds-chip (--active) ds-chip-removeds-skeletonds-swatch ds-swatch-color ds-swatch-info ds-swatch-name ds-swatch-valueds-type-label ds-type-label-metads-overlay-sample ds-overlay-bg ds-overlay-layer ds-overlay-strong ds-overlay-light ds-overlay-labelds-modal ds-modal-header ds-modal-body ds-modal-footer ds-modal-closeds-tooltip-demo ds-tooltip-bubbleds-dropdown ds-dropdown-item ds-dropdown-dividerds-display ds-hero ds-h1 ds-h2 ds-h3 ds-h4 ds-h5 ds-subtitleds-lead ds-caption ds-eyebrow ds-serif ds-mono ds-meta ds-coverds-text-cjk ds-text-cjk-heading ds-text-mixed ds-text-indent ds-hanging-punctuation ds-text-emphasis ds-text-highlightds-quote-cjk ds-no-orphan ds-num-unitds-text-center ds-text-muted ds-text-accent ds-text-balance ds-text-pretty ds-inline-code ds-body-smds-toc ds-toc-article ds-toc-article-title ds-toc-list ds-toc-link (--active/--h3) ds-toc-indicator ds-toc-badge ds-toc-grid ds-toc-item ds-toc-numds-timeline ds-timeline-item ds-timeline-dot ds-timeline-content ds-timeline-date ds-timeline-title ds-timeline-tagds-date-group ds-date-wrap ds-date-input ds-date-icon ds-date-calendards-cal-header ds-cal-nav ds-cal-month-year ds-cal-month ds-cal-year ds-cal-weekdays ds-cal-grid-new ds-cal-day ds-cal-today ds-cal-selected ds-cal-muted ds-cal-weekend ds-cal-weekend-col ds-cal-footer ds-cal-btn (--primary)ds-slider-group ds-slider-label-row ds-slider-value ds-slider-track-wrap ds-slider-track ds-slider-fill ds-slider ds-slider-labelsds-accordion ds-accordion-item ds-accordion-header ds-accordion-arrow ds-accordion-contentds-code ds-code-bar ds-code-langds-logo (--lg) ds-logo-mark ds-logo-text ds-logo-word ds-logo-sub ds-logo-hero ds-logo-drawds-brand-preview (--paper/--ink)ds-hero-section ds-hero-inner ds-hero-badge ds-hero-title ds-hero-lead ds-hero-actions ds-hero-meta ds-hero-mark-wrap ds-gradient-textds-stat-grid ds-stat ds-stat-num ds-stat-labelds-steps ds-step ds-step-num ds-step-bodyds-compat-grid ds-compat-item ds-cta-h2ds-feature-card ds-feature-icods-dl-grid (--two-rows) ds-dl-card ds-dl-top ds-dl-ico ds-dl-meta ds-dl-actionsds-docs ds-docs-aside ds-docs-main ds-doc-blockds-prompt ds-prompt-head ds-prompt-title ds-prompt-body ds-prompt-footds-footer-rich ds-footer-cols ds-footer-brand ds-footer-col-heading ds-footer-links ds-footer-bottomds-reveal (--left/--right/--scale, stagger via inline --d)ds-anim-float ds-anim-spin-slow ds-anim-pulse ds-anim-fade-in ds-anim-rise ds-anim-glow-breatheds-glow-border ds-aura ds-surface-glow ds-heading-glowds-edge-decor (--tl/--tr/--bl/--br)ds-bg-blob (--1/--2/--3)ds-sr-only ds-skip #ds-mainstyles.css (and optional
scripts.js) are linked.<style> but still use OKLch
and equivalent token values.header/main/section/nav/footer) with correct heading order.[data-theme="dark"].<article class="ds-card ds-card--hoverable">
<span class="ds-badge ds-badge--accent">新</span>
<h4 class="ds-serif ds-mt-3">橄榄园笔记</h4>
<p class="ds-text-muted">使用令牌的卡片,悬停浮起,深浅主题自适配。</p>
<a class="ds-btn ds-btn--primary ds-mt-4" href="#">阅读全文</a>
</article>
tokens.json