Agent skill

Tabler Core JavaScript

by tabler in tabler/tabler

Guidance for changing the Tabler framework's own JavaScript in core/js: the tabler.js and tabler-theme.js bundles, the Bootstrap port and their tests.

MITAuto-check passedFrontend & Design

Install Tabler Core JavaScript

skills CLI
$ npx skills add tabler/tabler --skill core-js -a claude-code

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

GitHub CLI
$ gh skill install tabler/tabler core-js --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/tabler/tabler.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/core-js .claude/skills/core-js && 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
core-js
GitHub stars
42k
Token cost
~1.4k tokens
SKILL.md length
535 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Guidance for changing the Tabler framework's own JavaScript in core/js: the tabler.js and tabler-theme.js bundles, the Bootstrap port and their tests.

  • Works in 7 steps: Two entry points → js/src/bootstrap/** is a port, not our… → Tabler's own modules → …
  • Fixing or adding a data-bs-toggle handler in Tabler
  • SKILL.md covers 1. Two entry points, 2. js/src/bootstrap/** is a…, 3. Tabler's own modules and 4. Docs markers, plus 3 more sections
  • Calls pnpm

What it does

Two bundles are built from core/js, both public API with a size budget. tabler.js holds the plugin initializers, the Bootstrap components and the tabler helper namespace. tabler-theme.js is only the color-mode switcher, loaded right after the body tag and not deferred so the theme applies before first paint, which is why it stays tiny, with a budget of 1 kB raw and 800 B minified.

The js/src/bootstrap directory is a TypeScript port of Bootstrap 5.3.8 and is treated as vendored: bugs are fixed the way upstream fixed them, the structure stays recognizable, and changes come with tests that mirror the upstream suite. Tabler's own modules, such as dropdown, tooltip, toast and input-mask, are side-effect initializers that query data-bs-toggle attributes at import time. The data-bs attribute API stays as it is, since renaming it is held for 2.0, and demo-page scripts belong to a different skill.

When your agent uses it

  • Fixing or adding a data-bs-toggle handler in Tabler
  • Changing the theme switcher without breaking first paint
  • Fixing a misbehaving Bootstrap component in the vendored port

Example prompts

  • “The Tabler tooltip initializer ignores elements added later. Fix it in core/js.”
  • “Add a plugin initializer to tabler.ts for the sortable list.”
  • “The theme flashes on page load. Check tabler-theme.js and fix it.”

Requirements

  • A checkout of the Tabler repository

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Two entry points
  2. js/src/bootstrap/** is a port, not our code
  3. Tabler's own modules
  4. Docs markers
  5. Tests
  6. Build and budget
  7. Checklist

What it can do on your machine

Read from SKILL.md and the folder at commit dcacb65. 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

    Shell commands in SKILL.md call:

    • pnpm

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

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    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

Tabler Core JavaScript loads about 1.4k tokens when it runs. Until then it costs about 114 tokens; SKILL.md has 535 words of instructions outside code blocks.

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

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 tabler/tabler at commit dcacb65, republished under its MIT licence (© tabler). 535 words, ~1,391 tokens.

Download SKILL.mdSave it as .claude/skills/core-js/SKILL.md (or your agent's skills folder).
name
core-js
description
Work on the framework's own JavaScript in `core/js/` — the `tabler.js` and `tabler-theme.js` bundles, the vendored Bootstrap component port, and their browser tests. Use when a Tabler behaviour needs adding or fixing (a `data-bs-toggle` handler, the theme switcher, a plugin initialiser), when a Bootstrap component's JS misbehaves, and before changing anything under `core/js/src/`. Not for demo-page scripts — that is the `astro-scripts` skill.

The framework JavaScript

core/js builds two shipped bundles. Everything here is public API and is bound by a size budget.

1. Two entry points

EntryShips asHolds
js/tabler.tstabler.js / .esm.js (+ .min)plugin initialisers, the Bootstrap components, the tabler helper namespace
js/tabler-theme.tstabler-theme.js (+ variants)the colour-mode/theme switcher only

tabler-theme.js is loaded right after <body> and not deferred, so the chosen theme applies before the first paint. It stays tiny on purpose (bundlewatch: 1 kB raw, 800 B minified) — do not add anything to it that is not needed before paint.

2. js/src/bootstrap/** is a port, not our code

That directory is Bootstrap's JavaScript rewritten in TypeScript, MIT headers kept, VERSION = '5.3.8'. Treat it as vendored:

  • Fix bugs the way upstream did, and keep the file's structure recognisable against twbs/bootstrap. Gratuitous restructuring makes the next upstream sync expensive.
  • js/src/bootstrap.ts is the single source of truth for what is exported and for the bootstrap namespace object.
  • A new or reworked component class follows the bootstrap-component skill (file order, typed config, Data API).
  • Coverage is configured to measure exactly this directory (js/src/bootstrap/**), and js/tests/unit/*.spec.ts mirrors upstream's suite — a change here is expected to come with its test.

3. Tabler's own modules

Modules directly in js/src/*.ts (autosize, countup, dropdown, input-mask, popover, sortable, switch-icon, tab, toast, tooltip) are side-effect initialisers: importing them from tabler.ts wires the behaviour. The pattern is a data-bs-toggle query at import time:

ts
// js-docs-start switch-icon-init
const switchesTriggerList: HTMLElement[] = [].slice.call(document.querySelectorAll<HTMLElement>('[data-bs-toggle="switch-icon"]'))
switchesTriggerList.map(function (switchTriggerEl: HTMLElement) {
  switchTriggerEl.addEventListener('click', (e: MouseEvent) => {
    const active = switchTriggerEl.classList.toggle('active')
    switchTriggerEl.setAttribute('aria-pressed', active ? 'true' : 'false')
  })
})
// js-docs-end switch-icon-init
  • The attribute API stays data-bs-*. Renaming it to data-tblr-* is a breaking change held for 2.0 — do not start it here.
  • Keep the accessible state in sync with the class (aria-pressed, aria-expanded), as above.
  • A new module must be imported from js/tabler.ts, or it never ships.
  • There is no shared colour helper: demo charts resolve --tblr-* colours to hex in shared/components/demo/Chart.astro.

4. Docs markers

js-docs-start <name> / js-docs-end <name> mark the snippet a documentation page shows for that behaviour (docs/components/CodeDocs.astro, docs/lib/llms.ts). Keep the marked region self-contained and copy-pasteable, and check who references the name before renaming it.

Show full SKILL.md (208 more words)Show less

5. Tests

Tests run in a real browser — vitest browser mode with Playwright Chromium, not jsdom:

bash
pnpm --filter @tabler/core test:js
pnpm --filter @tabler/core test:js:watch
pnpm --filter @tabler/core test:js:coverage
  • js/tests/unit/**/*.spec.ts — behaviour, using js/tests/helpers/fixture.ts to mount markup.
  • js/tests/visual/*.html — pages for looking at a component by hand.
  • The first run needs Playwright's browser installed; if it fails on a missing binary, install it rather than switching the config to jsdom.

6. Build and budget

vite builds each entry as a library in es + umd (BASE_NAME selects the entry), then terser produces the .min variants with source maps. Sizes are enforced:

FileLimit
dist/js/tabler.js64 kB
dist/js/tabler.min.js48 kB
dist/js/tabler-theme.js1 kB
bash
pnpm --filter @tabler/core build
pnpm run bundlewatch

Prefer a small dependency-free implementation over pulling a package in: every kilobyte here lands on every Tabler page.

7. Checklist

  • New module imported from js/tabler.ts (or deliberately kept out of the bundle)
  • data-bs-* attribute API unchanged; accessible state updated with the class
  • No export, option or event removed or renamed, and no new throw on input that used to work (backward-compat)
  • Bootstrap-port changes stay close to upstream and come with a js/tests/unit spec
  • js-docs-* markers intact and self-contained
  • pnpm --filter @tabler/core test (js + scss) clean
  • pnpm run type-check and pnpm run lint:prettier clean
  • pnpm run bundlewatch within budget, or the new limit justified in the PR
  • Docs page updated and changeset written

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

Files

Just SKILL.md in .agents/skills/core-js of tabler/tabler.

Open the folder on GitHubat commit dcacb65

Compare with similar skills

Tabler Core JavaScript 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.

Tabler Core JavaScript compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tabler Core JavaScript this skilltabler/tabler42k—~1.4kAutomated safety check: PassMIT
Pierre Trees File Treepierrecomputer/pierre6.2k—~473Automated safety check: PassApache-2.0
Creating Docs Code Exampleshandsontable/handsontable22k—~2.2kAutomated safety check: PassCustom licence
Frontend UIoomol-lab/open-flow223—~857Automated safety check: PassApache-2.0
Frontend UI Dark TSmicrosoft/skills3.1k5 repos~3.6kAutomated safety check: PassMIT
React Frontend Development Guidelinesdiet103/claude-code-infrastructure-showcase10k2 repos~2.9kAutomated safety check: PassMIT

Similar skills

  • Pierre Trees File Tree

    pierrecomputer/pierre

    Use when an app uses @pierre/trees to render or control a file tree, including React, vanilla JavaScript, SSR, web components, selection, search, rename, drag…

    6.2k GitHub stars~473 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Creating Docs Code Examples

    handsontable/handsontable

    Sets the rules for writing Handsontable documentation examples in JavaScript, TypeScript, React, Angular and Vue, with the imports, registration and licence key each needs.

    22k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Frontend UI

    oomol-lab/open-flow

    Implement and review Open Flow frontend components, styling, layout, and interactions.

    223 GitHub stars~857 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Frontend UI Dark TS

    microsoft/skills

    Official

    Build dark-themed React applications using Tailwind CSS with custom theming, glassmorphism effects, and Framer Motion animations.

    3.1k GitHub starsUsed in 5 repos~3.6k tokens
    Frontend & DesignAuto-check passed
  • React Frontend Development Guidelines

    diet103/claude-code-infrastructure-showcase

    Guidelines for React 18 and TypeScript apps covering Suspense data fetching, lazy loading, feature folders, MUI v7 styling, TanStack Router and performance.

    10k GitHub starsUsed in 2 repos~2.9k tokens
    Frontend & DesignAuto-check passed
  • Vuetify Skilld

    logue/vite-vuetify-ts-starter

    Vue Material Component Framework. An agent skill from logue/vite-vuetify-ts-starter.

    181 GitHub starsUsed in 1 repo~1.9k tokens
    Frontend & DesignAuto-check passed

More from tabler/tabler

All 21 skills in this repo
  • Starts the right Tabler dev server, keeps it from clashing with builds and verifies changes in the browser before a page or component is handed back.

    42k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Rules for adding or fixing client-side scripts in Tabler's Astro components so the copied preview HTML stays readable, self-contained and runs in the right order.

    42k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Sets the file structure, typing and Data API pattern for writing a new Bootstrap-style JavaScript component class in Tabler's vendored port of Bootstrap's JS.

    42k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Writes or updates the classnames front matter that renders the class table at the end of a Tabler component docs page.

    42k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Tabler Core SCSS

    tabler/tabler

    Rules for adding or changing styles in Tabler's core/scss framework: file placement, custom properties, dark mode, RTL, tests and build gates.

    42k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Builds or updates a Tabler component preview page under preview/pages, covering the page skeleton, header, and card grid conventions.

    42k GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Questions about Tabler Core JavaScript

What does Tabler Core JavaScript do?

Guidance for changing the Tabler framework's own JavaScript in core/js: the tabler.js and tabler-theme.js bundles, the Bootstrap port and their tests. Two bundles are built from core/js, both public API with a size budget.js holds the plugin initializers, the Bootstrap components and the tabler helper namespace.

When should I use Tabler Core JavaScript?

Tabler Core JavaScript fits situations like: fixing or adding a data-bs-toggle handler in Tabler; changing the theme switcher without breaking first paint; fixing a misbehaving Bootstrap component in the vendored port.

How do I install Tabler Core JavaScript in Claude Code?

Run `npx skills add tabler/tabler --skill core-js -a claude-code`. Or copy the skill folder (.agents/skills/core-js in tabler/tabler) into .claude/skills/core-js in your project. Claude Code loads it when a task matches its description.

How do I install Tabler Core JavaScript in Codex?

Run `npx skills add tabler/tabler --skill core-js -a codex`. Or copy the skill folder (.agents/skills/core-js in tabler/tabler) into .agents/skills/core-js in your project. Codex loads it when a task matches its description.

Can I use Tabler Core JavaScript 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 tabler/tabler --skill core-js -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/core-js, .gemini/skills/core-js, .github/skills/core-js and .opencode/skills/core-js in your project.

What does Tabler Core JavaScript need to run?

Going by SKILL.md and its folder, Tabler Core JavaScript needs the command-line tools its instructions call (pnpm). Our summary lists: A checkout of the Tabler repository.

Does Tabler Core JavaScript access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Tabler Core JavaScript 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 Tabler Core JavaScript use?

Tabler Core JavaScript 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 Tabler Core JavaScript use?

About 1.4k tokens (SKILL.md is roughly 5.6k 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 Tabler Core JavaScript?

Skills that share tags, products or a category with Tabler Core JavaScript: Pierre Trees File Tree (pierrecomputer/pierre, 6.2k stars), Creating Docs Code Examples (handsontable/handsontable, 22k stars), Frontend UI (oomol-lab/open-flow, 223 stars) and Frontend UI Dark TS (microsoft/skills, 3.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Tabler Core JavaScript?

tabler (a GitHub organization) maintains it in tabler/tabler, which has 41,821 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 6, 2026.

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