agentsclimarketplace

Lazyway io design

Skill jpbaking/lazyway-io-design/skills/shared/lazyway-io-design

The lazyway.io design system as a portable kit: tokens, component classes, zero-dependency JS, favicon tooling, and an Agent Skill that keeps AI-generated UI on-brand

Install
npx -y skills add jpbaking/lazyway-io-design --skill lazyway-io-design

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Build or edit web pages and UI in the lazyway.io design system (IBM Plex, brand blue #12279E, one amber accent, design/styles.css + design/components.css). Use when creating or styling HTML pages, React apps/components, landing pages, dashboards, blogs, docs sites, single-function app UIs (url-shortener style), charts, modals, forms, tables, tiles, date/time pickers, or favicons in a project that uses this kit — or when the user mentions lazyway design, the design kit, lw components, or the brand style guide.

SKILL.md

8.2 KB, as published. Nobody here has run it

lazyway-io-design — how to build pages

Follow these instructions literally. Do not improvise styling.

Step 0 — get the kit (works in any workspace)

Kit repo: https://github.com/jpbaking/lazyway-io-design (branch main).

The kit library lives user-global at ~/.agents/skills/lazyway-io-design/library — that is <kit> throughout this skill. Projects never carry the whole library; only the artifacts a project actually uses are copied into it (and committed there).

The project must serve the kit's design/ folder (usually public/design/, so URLs are /design/...). Check that design/styles.css AND design/components.css exist there. If they do, skip ahead. If not, copy them from the library — NEVER recreate the kit's files by hand:

  1. Library missing? If <kit>/design/styles.css does not exist, the toolkit is not (fully) installed: offer to install it user-global per https://github.com/jpbaking/lazyway-io-design and proceed only if the user agrees. (Fallback without a full install: git clone --depth 1 https://github.com/jpbaking/lazyway-io-design.git ~/.cache/lazyway-io-design — or extract https://github.com/jpbaking/lazyway-io-design/archive/refs/heads/main.tar.gz there — and use that as <kit> for this session.)
  2. Copy into the project: cp -r <kit>/design <webroot>/design (for Vite/Astro/React the webroot is public/). If the project has no favicons yet, also cp <kit>/design/assets/favicons/* <webroot>/ (or generate a branded set with <kit>/scripts/make-favicons.sh logo.svg <webroot>/ "Site Name"). The copied files are committed project truth — never gitignore them.

The library also contains: demos/ (full example pages to copy from), components/react/ (React components), starter/react/ and starter/astro/ (new-project starters), CHEATSHEET.md and README.md (the full reference). Copy from these into the project as needed (renaming to fit the project); never edit the global library to fit one project.

Absolute rules

  1. NEVER write custom CSS when a class below does the job. If custom CSS is truly unavoidable, use ONLY var(--…) tokens — never hardcode a color, px size, or shadow.
  2. ONE amber element per page: a .kicker, OR one .nav-link.active, OR one .stat-highlight, OR one .alert-warn. Pick exactly one. (Status badges and chart colors don't count.)
  3. Backgrounds: white or solid brand blue only. NO gradients, ever.
  4. Uppercase mono text (.mono-label, .kicker, .tag, .label) is for short labels only — never body text.
  5. Every page MUST have the three favicon links (see templates). If the favicon files don't exist, copy or generate them (Step 0.3).
  6. Logos: rounded blue tile #12279E, white linework, exactly ONE amber #D9821F dot.
  7. Copy tone: plain, understated, British spelling (organise, centre), no exclamation marks.

Step 1 — start from a template

Bundled with this skill (copy, then edit text only):

  • templates/page.html — standard site page (nav + hero + section + footer)
  • templates/app.html — single-function app (blue band + action card, the url-shortener pattern)

Every page head must keep: the 3 favicon links, /design/styles.css, /design/components.css. Load /design/components.js before </body> only if the page uses modals/tabs/pickers; /design/charts.js only for charts.

Step 2 — build with these classes only

  • Layout: .container (1100px) · .container-narrow (720px) · .section · grids .grid-2/-3/-4, .grid-cards, .grid-stats
  • Headings: .kicker (amber eyebrow) · .headline · .lead
  • Section head: .section-head > .section-kicker + .section-title + optional .section-all link
  • Buttons: .btn btn-primary / btn-secondary / btn-quiet / btn-danger, size btn-sm; on blue: btn-on-blue / btn-outline-on-blue; small .copy-btn
  • Nav: .nav-wrap > .nav container > .brand (img + .brand-name) + .nav-links > .nav-link (.active = the amber)
  • Footer: .footer > .footer-inner container > .foot-brand / .foot-links (.foot-link) / .foot-copy
  • Hero: .hero (or .hero-invert for blue) > .hero-mesh img (/design/assets/mesh-blue.svg, aria-hidden) + .hero-inner container > kicker/headline/lead/.hero-actions
  • Cards: .card > .card-meta + .card-title + .card-desc; clickable = a.card.tile
  • Stats: .stat > .stat-value + .stat-label + optional .stat-delta up/down; ONE .stat-highlight max
  • Tags/badges: .tag (.active), .tag-row; .badge badge-live/-pilot/-shipped/-planned/-danger
  • Table: .table-wrap > table.table; numeric cells get .num
  • Key/value list: .data-list > .data-row > .data-key + .data-value
  • Forms: .field > .label + .input/.select/.textarea; .field-hint, .field-error + .input-error; .search-input; .checkbox, .radio; .switch (hidden input + .switch-track)
  • Alerts: .alert alert-info/-success/-warn/-danger > .alert-title + text
  • Modal (components.js): trigger data-modal-open="#id"; <dialog id class="modal"> > .modal-head (.modal-title, .modal-close with data-modal-close) + .modal-body + .modal-foot
  • Tabs (components.js): [data-tabs] > .tab-list > .tab with data-tab-target="#panel" (+.active on first) + .tab-panel divs (hidden on all but first)
  • Pickers (components.js): <input class="input" data-datepicker>YYYY-MM-DD; <input class="input" data-timepicker="15">HH:MM
  • Progress: .progress > .progress-fill (inline width %; .warn/.danger); label row .progress-label
  • Long-form/markdown output: wrap in .prose
  • Blog list item: .post-card > .post-meta (.post-date, .post-tag) + .post-title + .post-desc
  • App shell (see templates/app.html): .app-page body > .app-hero (.app-brand+.app-wordmark, .app-kicker, .app-title, .app-tagline) + .action-card (.input-row, .option-row, .result-block > .result-row > .result-link + .copy-btn) + .item-list (.item-list-head, .item-count, .item-card > .item-title/.item-sub/.item-meta) + .app-foot
  • Utilities: .mono-label, .muted, .center, .stack-1..4, .spinner (in a blue button)

Charts (only with /design/charts.js)

Container: <div class="chart"><h3 class="chart-title">T</h3><p class="chart-sub">S</p><div id="c1"></div></div>

lwCharts.bar("#c1",  { labels: ["Q1","Q2"], series: [{ name: "Plan", values: [40,55] }] });
lwCharts.line("#c1", { labels: [...], series: [{ name, values }], area: true }); // area: 1 series only
lwCharts.donut("#c1",{ slices: [{ label: "API", value: 41 }], totalLabel: "total" });
lwCharts.sparkline("#c1", { values: [3,5,4,7] }); // inside a .stat

NEVER pass colors (auto from validated --chart-1..5). Max 5 series. Never two y-axes. Legends/tooltips are automatic.

Diagrams (mermaid via CDN)

theme: "base", themeVariables: primaryColor #F4F5FB, primaryBorderColor #12279E, primaryTextColor #16182E, lineColor #61657F, secondaryColor #FDF6EC, tertiaryColor #FFFFFF, fontFamily IBM Plex Sans, sans-serif. Put the diagram in a .card.

React projects

Use the kit's React components (copy <kit>/components/react/*.tsx into src/components/): Modal, Tabs, DatePicker, TimePicker, DataTable, StatTile, Chart. Same two stylesheets required. Chart needs /design/charts.js in index.html. NEVER load /design/components.js in a React app. New app: start from <kit>/starter/react/ (bootstrap steps in its AGENTS.md).

Checklist before finishing any page

  • 3 favicon links + 2 stylesheet links present; favicon files exist
  • Exactly one amber element
  • No custom CSS that a documented class could replace; no hardcoded hex/px
  • No gradients; no pill radii; mono uppercase only on labels
  • Charts: no custom colors, ≤5 series

Gives 0 of the 12 instructions most design systems skills give

Counted across 528 of the 534 authors here whose files we hold, read 2026-08-06

  • create a custom theme if neededin 54 of 528, across 10 files
  • read the corresponding theme filein 54 of 528, across 10 files
  • ask which theme to applyin 53 of 528, across 9 files
  • show the theme showcasein 53 of 528, across 9 files
  • maintain visual identity across all slidesin 50 of 528, across 6 files
  • apply the specified colors and fontsin 47 of 528, across 3 files
  • get explicit confirmationin 45 of 528, across 1 file
  • Generate a design system before codingin 19 of 528, across 6 files
  • Maintain at least 4.5:1 color contrast ratioin 19 of 528, across 8 files
  • Describe component shapes, colors, shadows, and interaction statesin 18 of 528, across 4 files
  • Check Python installation and install if missingin 17 of 528, across 4 files
  • Default to html-tailwind if stack is unspecifiedin 17 of 528, across 4 files

Said here and by no other author read

  • follow instructions literally
  • copy the kit stylesheet into the project
  • use existing kit files over manual recreation
  • never edit the global library for a project
  • use provided templates as the starting point
  • use only documented classes and components

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.