Agent skill

Use Swim UI

by swimlane in swimlane/ngx-ui

Use Swimlane swim-ui (swim- custom elements) when building custom solutions, record widgets, or report widgets for Turbine.

MITAuto-check passedFrontend & Design

Install Use Swim UI

skills CLI
$ npx skills add swimlane/ngx-ui --skill use-swim-ui -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install swimlane/ngx-ui use-swim-ui --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/swimlane/ngx-ui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/use-swim-ui .claude/skills/use-swim-ui && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
use-swim-ui
GitHub stars
735
Token cost
~2.6k tokens
SKILL.md length
957 words
Files
2
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Use Swimlane swim-ui (swim- custom elements) when building custom solutions, record widgets, or report widgets for Turbine.

  • Modifying Turbine widgets
  • SKILL.md covers Base and runtime, CDN usage (solutions without…, Attribute naming and Events, plus 6 more sections
  • Reaches esm.sh and cdn.jsdelivr.net
  • Custom solutions

What it does

Use Swim UI is an agent skill from swimlane/ngx-ui. Use Swimlane swim-ui (swim- custom elements) when building custom solutions, record widgets, or report widgets for Turbine. Covers properties, events, slots, imperative APIs, and CDN usage. Apply this skill when using generate-swimlane-lit-solution (it depends on use-swim-ui for component list, API, and design). Use when authoring or modifying Turbine widgets, custom solutions, or any UI that uses @swimlane/swim-ui components.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `reference.md`).

It sits in Frontend & Design, covering Design systems. It works with Angular. The repository describes itself as: 🚀 Style and Component Library for Angular. The licence is MIT.

When your agent uses it

  • Modifying Turbine widgets
  • Custom solutions
  • Any UI that uses @swimlane/swim-ui components

Example prompts

  • “/use-swim-ui”

What it can do on your machine

Read from SKILL.md and the folder at commit c98542d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • esm.sh
    • cdn.jsdelivr.net

    Also links to:

    • docs.swimlane.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Use Swim UI loads about 2.6k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 957 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~111
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from swimlane/ngx-ui at commit c98542d, republished under its MIT licence (© swimlane). 957 words, ~2,563 tokens.

Download SKILL.mdSave it as .claude/skills/use-swim-ui/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
use-swim-ui
description
Use Swimlane swim-ui (swim-* custom elements) when building custom solutions, record widgets, or report widgets for Turbine. Covers properties, events, slots, imperative APIs, and CDN usage. Apply this skill when using generate-swimlane-lit-solution (it depends on use-swim-ui for component list, API, and design). Use when authoring or modifying Turbine widgets, custom solutions, or any UI that uses @swimlane/swim-ui components.

Using Swimlane swim-ui

Use this skill when building custom solutions or widgets for Swimlane Turbine with Swimlane swim-ui (swim-* web components). All UI must use these elements; do not invent tag names or assume other component libraries.

Base and runtime

  • Custom elements: Extend SwimlaneElement (from @swimlane/swimlane-element@2), not raw LitElement. Use css, html, svg, unsafeCSS from that package.
  • Widget docs: Turbine Widgets — record widgets and report widgets; implementations are web components / custom elements.
  • Component source: Full APIs (properties, events, slots) live in projects/swimlane/swim-ui/src/components/<name>/. For precise attribute names and event payloads, read the component .component.ts and index.ts files.

CDN usage (solutions without build)

js
import { SwimlaneElement, css, html } from '@swimlane/swimlane-element@2';  // or https://esm.sh/@swimlane/swimlane-element@2
import 'https://cdn.jsdelivr.net/gh/surya-pabbineedi/swim-ui@gh-pages/swim-ui.js?v=1';

Ensure the lit specifier is available (e.g. via import map) so the swim-ui bundle resolves. Load SwimlaneElement (or Lit) before the swim-ui bundle.

Attribute naming

  • Lit properties are exposed as kebab-case attributes: sectionCollapsed → section-collapsed, closeOnOutsideClick → close-on-outside-click, fontIcon → font-icon.
  • Booleans: presence = true; use attribute="false" or close-on-outside-click="false" where the component uses a custom converter for false.

Events

Host-only custom events (confirmed contract)

Swim-ui custom events are dispatched only on the swim-* element host (the custom element node: event.target is that element). They use bubbles: false and composed: false, so they do not propagate to ancestors, document, or past shadow boundaries.

How to listen

  • Lit: use @event on the swim-* node that emits it (for example @change on swim-input, @close on swim-dialog), not on a wrapping div expecting the event to bubble up.
  • Vanilla: element.addEventListener('change', ...) where element is the swim-* reference from querySelector, ref, or createElement.

Do not rely on event delegation on a parent, document, or window for these custom events—they will not fire there. (Native click on swim-button is separate: it behaves like a normal control.)

Naming: Because custom events stay on the host, conventional names (change, close, open, select, etc.) are safe. If a future API ever required bubbles: true, prefer a non-generic, swim-specific event name to avoid clashes.

Use event.detail for payloads where the component defines it.

Propagation summary (bubbles / composed)
ValueMeaning
Custom eventsbubbles: false, composed: falseHost-only; listen on that swim-* element.

Repro: The swim-ui demo Event propagation (#event-bubbling-matrix) shows swim-checkbox in light DOM vs inside another shadow root.

Per-event reference
ElementEventBubblesComposedDetail
swim-buttonclicknativenative—
swim-inputinput, change, focus, blurnonovalue / validation
swim-selectchange, filter-changenonovalue / { query }
swim-selectdropdown-open, dropdown-closenonopanel open state
swim-checkboxchange, checked-change, indeterminate-change, focus, blurnonochecked / indeterminate
swim-togglechange, focus, blurnonochecked
swim-radiochange, focus, blurnonovalue
swim-radio-groupchange, blurnonoselected value
swim-button-togglevalue-changenonovalue
swim-button-toggle-groupvalue-changenonoselected value
swim-sliderchangenono{ value, percent }
swim-calendarchange, day-key-enternonovalue / keyboard
swim-date-timechange, value-change, input-change, date-time-selected, focus, blurnonovalue / segments
swim-tabsselect-tab, selectnono{ tab }
swim-tabswim-tab-active-changenono—
swim-sectiontogglenonocollapsed boolean
swim-dialogopen, closenonooptional detail on close
swim-large-format-dialog-contentclose-or-cancelnonodirty boolean
swim-drawerclosenonooptional detail
swim-listpage-change, scrollnonopage / scrollTop
swim-cardselect, outline-clicknonoselected / —
swim-tooltipshow, hidenonotrue
swim-navbar, swim-navbar-itemactive-changenonoindex
swim-split-handledragstart, drag, dragend, dblclicknonoMouseEvent detail

Slots

Common patterns:

  • Default slot: main content (e.g. swim-card, swim-dialog, swim-drawer, swim-tab body).
  • Named slots: slot="header", slot="footer", slot="hint", slot="prefix", slot="suffix", slot="content" (tooltip), slot="label" (tab), slot="avatar", slot="title", slot="subtitle".

Use the component’s JSDoc @slot in projects/swimlane/swim-ui/src/components/<name>/*.component.ts for the exact list.

Imperative APIs

Show full SKILL.md (391 more words)Show less
Drawer
  • Declarative: <swim-drawer open> plus show() / hide() on the element reference.
  • Imperative: openDrawer(options) from @swimlane/swim-ui (or the drawer controller). Options: direction, size, zIndex, closeOnOutsideClick, isRoot, parentContainer, content (HTMLElement | DocumentFragment | string), cssClass. Returns { close(), drawer }. Listen to the drawer’s close event for cleanup.
js
import { openDrawer } from '@swimlane/swim-ui/drawer';  // or from the CDN bundle if it exports it
const { close, drawer } = openDrawer({ direction: 'left', size: 80, content: fragmentOrElement });
// later: close();

When using the CDN bundle, the drawer may be created with document.createElement('swim-drawer'), set properties, append content, append to body, then call drawer.show() and on close remove from DOM. See projects/swimlane/swim-ui/src/components/drawer/drawer-controller.ts.

Component list (quick reference)

TagPurpose
swim-buttonButtons: variant, size, disabled, state (active/in-progress/success/fail), promise
swim-button-groupGroup of buttons; orientation, variant
swim-button-toggleSingle toggle button
swim-button-toggle-groupToggle group; single selection, value-change
swim-inputText/number/textarea; label, hint, validation, appearance, prefix/suffix slots
swim-selectSingle/multi select; options prop or swim-option children; filter
swim-checkboxCheckbox; indeterminate; change, checked-change
swim-radioSingle option
swim-radio-groupRadios; change with value
swim-toggleToggle switch; change
swim-sliderSlider; single or range; change { value, percent }
swim-tabsTab container; vertical; appearance
swim-tabTab panel; label slot; active
swim-sectionCollapsible section; section-title, section-collapsed, section-collapsible, header slot
swim-cardCard; orientation, status, selectable, selected, outline-text
swim-card-header, swim-card-body, swim-card-footer, swim-card-avatar, swim-card-placeholderCard structure
swim-dialogModal; dialog-title, format (regular/medium/large), visible, show-backdrop, close-button, close-on-blur, close-on-escape
swim-large-format-dialog-content, swim-large-format-dialog-footerLarge/medium dialog layout slots
swim-drawerSlide panel; direction (left/right/bottom), size, open, closeOnOutsideClick, isRoot; show()/hide()
swim-tooltipTooltip/popover; content, placement, alignment, type, show-event
swim-iconIcons; font-icon, font-set (e.g. "lit"); alt for a11y
swim-navbarNavbar; swim-navbar-item children; active-change
swim-listList/table; columns, headerLabels, dataSource, column-layout, height, default-row-status; page-change, scroll
swim-progress-spinnerSpinner; mode, appearance; in-progress-icon, complete-icon, fail-icon slots
swim-splitResizable split; swim-split-area, swim-split-handle children; handle fires drag / dblclick
swim-calendarCalendar; change, day-key-enter
swim-date-timeDate/time input + picker; change, value-change, blur, focus

Design and accessibility

  • Use lit-elements as-is: no extra visual styling (colors, borders, shadows, typography) on swim-*; only layout (flex, grid, spacing).
  • Use design tokens where needed (e.g. --spacing-16, --radius-4 from the demo).
  • Preserve semantics and ARIA; ensure labels, focus, and keyboard behavior. See the generate-swimlane-lit-solution skill for full a11y and leak-free rules.

Relationship to generate-swimlane-lit-solution

This skill is the single source for the swim-ui component list, CDN/base usage, design rules, and API (see reference.md). When the task is to generate a full solution file (single .js in projects/swimlane/swim-ui/demo/solutions), apply the generate-swimlane-lit-solution skill for output location, create vs update, WCAG, and no memory leaks; it references use-swim-ui for components and design.

Detailed API reference

For per-component properties, events, slots, and enums, see reference.md and the source under projects/swimlane/swim-ui/src/components/<name>/.

© swimlane, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .cursor/skills/use-swim-ui of swimlane/ngx-ui.

  • SKILL.md
  • reference.md

Open the folder on GitHubat commit c98542d

Compare with similar skills

Use Swim UI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Use Swim UI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Use Swim UI this skillswimlane/ngx-ui735—~2.6kAutomated safety check: PassMIT
Radix Ngradix-ng/primitives274—~2.2kAutomated safety check: PassMIT
Radix Ng Examplesradix-ng/primitives274—~2.1kAutomated safety check: PassMIT
BeeqEndava/BEEQ163—~5.6kAutomated safety check: PassApache-2.0
Igniteui Angular Generate From Image DesignIgniteUI/igniteui-angular599—~4.7kAutomated safety check: PassMIT
Igniteui Angular Figma To AppIgniteUI/igniteui-angular599—~6.4kAutomated safety check: PassMIT

Similar skills

  • Radix Ng

    radix-ng/primitives

    Build correct, accessible UI with @radix-ng/primitives — the signals-first, headless Angular primitive library.

    274 GitHub stars~2.2k tokensUpdated 12 days ago
    Frontend & DesignAuto-check passed
  • Radix Ng Examples

    radix-ng/primitives

    Index of every documented @radix-ng/primitives example. An agent skill from radix-ng/primitives.

    274 GitHub stars~2.1k tokensUpdated 12 days ago
    Frontend & DesignAuto-check passed
  • Beeq

    Endava/BEEQ

    Builds, styles, and reviews UI with BEEQ, Endava's web-component design system.

    163 GitHub stars~5.6k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Implements Angular application views from design images using Ignite UI Angular components.

    599 GitHub stars~4.7k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Igniteui Angular Figma To App

    IgniteUI/igniteui-angular

    Builds Angular views from Figma designs with Ignite UI for Angular, supporting Indigo.Design kits, third-party kits, and plain frames.

    599 GitHub stars~6.4k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Start

    Joangeldelarosa/pxlkit

    A skill your agent uses when setting up a project to use pxlkit (@pxlkit/ui-kit), or when asked what the pxlkit skills do.

    117 GitHub stars~1.3k tokensUpdated 3 days ago
    Frontend & DesignAuto-check: notes

More from swimlane/ngx-ui

  • Generate Swimlane Lit Element Solution (CDN). An agent skill from swimlane/ngx-ui.

    735 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Generate Lit Component from Angular Implementation. An agent skill from swimlane/ngx-ui.

    735 GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Use Swim UI

What does Use Swim UI do?

Use Swimlane swim-ui (swim- custom elements) when building custom solutions, record widgets, or report widgets for Turbine. Use Swim UI is an agent skill from swimlane/ngx-ui. Use Swimlane swim-ui (swim- custom elements) when building custom solutions, record widgets, or report widgets for Turbine.

When should I use Use Swim UI?

Use Swim UI fits situations like: modifying Turbine widgets; custom solutions; any UI that uses @swimlane/swim-ui components.

How do I install Use Swim UI in Claude Code?

Run `npx skills add swimlane/ngx-ui --skill use-swim-ui -a claude-code`. Or copy the skill folder (.cursor/skills/use-swim-ui in swimlane/ngx-ui) into .claude/skills/use-swim-ui in your project. Claude Code loads it when a task matches its description.

How do I install Use Swim UI in Codex?

Run `npx skills add swimlane/ngx-ui --skill use-swim-ui -a codex`. Or copy the skill folder (.cursor/skills/use-swim-ui in swimlane/ngx-ui) into .agents/skills/use-swim-ui in your project. Codex loads it when a task matches its description.

Can I use Use Swim UI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add swimlane/ngx-ui --skill use-swim-ui -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/use-swim-ui, .gemini/skills/use-swim-ui, .github/skills/use-swim-ui and .opencode/skills/use-swim-ui in your project.

What does Use Swim UI need to run?

SKILL.md names no scripts, command-line tools or credentials: Use Swim UI is instructions for the agent only.

Does Use Swim UI access the network?

SKILL.md names 3 domains. In commands or code: esm.sh and cdn.jsdelivr.net; the agent is likely to contact these when it follows the instructions. As links in the text: docs.swimlane.com. This is read from the text; nothing was executed.

Is Use Swim UI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Use Swim UI use?

Use Swim UI is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Use Swim UI use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Use Swim UI?

Skills that share tags, products or a category with Use Swim UI: Radix Ng (radix-ng/primitives, 274 stars), Radix Ng Examples (radix-ng/primitives, 274 stars), Beeq (Endava/BEEQ, 163 stars) and Igniteui Angular Generate From Image Design (IgniteUI/igniteui-angular, 599 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Use Swim UI?

swimlane (a GitHub organization) maintains it in swimlane/ngx-ui, which has 735 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 10, 2026.

Source: swimlane/ngx-ui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.