Live UX Polish
EveryInc/compound-engineering-plugin
Collects your feedback on a running feature, typed or spoken and drawn in the browser, and turns it into focused UX fixes saved as local commits.
Explains which build step writes each asset directory in the Tabler repo and how to fix missing, stale or duplicated CSS and JS files.
$ npx skills add tabler/tabler --skill build-pipeline -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tabler/tabler build-pipeline --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/build-pipeline .claude/skills/build-pipeline && rm -rf skills-srcUse ~/.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/
Install the "build-pipeline" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/build-pipeline into .claude/skills/build-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "build-pipeline", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tabler/tabler/tree/dev/.agents/skills/build-pipelineType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tabler/tabler --skill build-pipeline -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tabler/tabler build-pipeline --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/build-pipeline .agents/skills/build-pipeline && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "build-pipeline" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/build-pipeline into .agents/skills/build-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "build-pipeline", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tabler/tabler --skill build-pipeline -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tabler/tabler build-pipeline --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/build-pipeline .cursor/skills/build-pipeline && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "build-pipeline" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/build-pipeline into .cursor/skills/build-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "build-pipeline", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tabler/tabler.git --path .agents/skills/build-pipeline--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tabler/tabler --skill build-pipeline -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tabler/tabler build-pipeline --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/build-pipeline .gemini/skills/build-pipeline && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "build-pipeline" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/build-pipeline into .gemini/skills/build-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "build-pipeline", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tabler/tabler build-pipelineInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tabler/tabler --skill build-pipeline -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/build-pipeline .github/skills/build-pipeline && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "build-pipeline" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/build-pipeline into .github/skills/build-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "build-pipeline", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tabler/tabler --skill build-pipeline -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tabler/tabler build-pipeline --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/build-pipeline .opencode/skills/build-pipeline && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "build-pipeline" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/build-pipeline into .opencode/skills/build-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "build-pipeline", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
build-pipelineExplains which build step writes each asset directory in the Tabler repo and how to fix missing, stale or duplicated CSS and JS files.
Pages in the Tabler repo are rendered by Astro, while CSS, JavaScript, fonts and images arrive through a separate asset pipeline. The skill maps each directory to the step that writes it: core/dist from @tabler/core, tmp-assets in the preview and docs packages, public/ from the copy-assets integration, and dist/ from astro build. All of these are git-ignored, so the agent is told never to hand-edit or commit anything inside them.
It then details the copy-assets integration in .build/copy-assets.ts. That integration deletes public/ and rebuilds it from a manifest every time Astro starts, skips the run for astro sync, and in dev watches synced folders and sends one batched full-reload within a 250 ms window. Watchers must write only to tmp-assets/css and let copy-assets sync the files, which avoids a race with the startup wipe. The excerpt stops before the section on ordering.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c2a7cbf. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pnpmgitturboFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tabler Asset Pipeline loads about 1.7k tokens when it runs. Until then it costs about 131 tokens; SKILL.md has 915 words of instructions outside code blocks.
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.
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.
The full file from tabler/tabler at commit c2a7cbf, republished under its MIT licence (© tabler). 915 words, ~1,745 tokens.
.claude/skills/build-pipeline/SKILL.md (or your agent's skills folder).Astro only renders pages. Every stylesheet, script, font and image on a page arrives through a separate pipeline, and almost every "weird assets" bug is a directory being written by the wrong step.
| Directory | Written by | Notes |
|---|---|---|
core/dist/ | @tabler/core (css:dev, js:build, copy) | the framework: css, js, fonts, img, vendored libs |
preview/tmp-assets/ | preview assets / watch:css (build-css.ts + vite/terser) | demo css/js, isolated from Astro's output |
docs/tmp-assets/css/ | docs css / watch:css (build-css, --no-prefix) | docs stylesheets |
<pkg>/public/ | copy-assets only | fully generated, wiped and rebuilt on every Astro start |
<pkg>/dist/ | astro build | the shipped site |
public/, tmp-assets/ and dist/ are all git-ignored per package. Never hand-edit a file in any of them, and never commit one.
copy-assets (.build/copy-assets.ts)An Astro integration, configured per package in astro.config.mjs:
astro:config:done it deletes public/ and rebuilds it from the copies manifest (core dist, the package's tmp-assets, shared/static, favicons). Running it twice must never accumulate content — that is why it starts from a clean directory.sync, so astro check (and CI's type-check job) does not need built workspace assets.syncDirs and copies changed files into public/, then sends one coalesced full-reload (250 ms window, .map files ride along with their source file).allowDestinationFallback keeps the existing copy when the source vanishes mid-copy — @tabler/core cleaning dist/ while turbo dev starts the dependents.Rule for watchers: copy-assets is the only writer of public/. It wipes the directory at startup, and the wipe can race a watcher that writes there directly — that was the ENOENT in #3006. Every watcher (preview's and docs' watch:css) writes into tmp-assets/css, and copy-assets syncs it into public/ via syncDirs. Do the same for anything new.
turbo.json encodes the graph: @tabler/core#dev:prepare → @tabler/preview#dev:prepare → the dev tasks (docs depends on both). dev:prepare is what guarantees core/dist and preview/tmp-assets exist before a dependent package's copy-assets runs. If you add a package or an asset dependency, add the edge here too — inside a package, ordering comes from Astro's own lifecycle, not from a pre-script.
Do not undo these; each has a comment at the site:
preview/.build/vite.config.mts writes to tmp-assets/js, not inside dist/: astro build copies public/ into dist/, so an outDir under dist/ gets re-seeded and re-copied, growing without bound across builds.--source-map parser rejects a path segment starting with a dot (.build/out/…) with a bogus "not a supported option".build-css.ts runs sass + postcss + clean-css in-process so each file is written once, fully processed; it also skips writes when the content is unchanged, to keep watchers quiet. Do not reintroduce a step that rewrites a finished file in place — that is what shifted every source-map mapping when the banner was added afterwards (#2766).NODE_ENV answers "dev server or build?" — Vite forces it to production for every build, including branch previews, so it can only pick unminified assets and the dev favicon. VERCEL_ENV answers "which deployment?" — production on the main hosts, preview on branch deploys, unset locally — and is the only value that may open robots.txt or anything else that must stay off on a preview. Checking NODE_ENV === 'preview' is never true anywhere. Both are in globalEnv in turbo.json; a new variable read by a build must be added there or the cache ignores it.preview's prettify-html integration formats built HTML on astro:build:done but excludes dist/preview/ and dist/dist/, which are asset copies and contain third-party HTML that breaks the parser.Work down this list; each step is cheap:
/dist/css/tabler.css or /preview/css/demo.css — the source was never built. pnpm --dir core run dev:prepare, then pnpm --dir preview run dev:prepare.public/ that copy-assets does not know about; it was wiped at startup. Add it to the manifest, or write it into tmp-assets instead.astro dev alone instead of the package's dev script), or its output dir is not in syncDirs.pnpm --dir <pkg> run clean, then dev:prepare.dist/ grows between identical builds — an output dir is nested inside another copy step (see the first trap).copy-assets run for the sync command; keep the early return.Read the dev server's own log first: copy-assets logs public/ rebuilt from workspace assets, each fallback warning, and every reload with the file that caused it.
pnpm --dir <pkg> run dev and a clean pnpm --dir <pkg> run build..build/ — preview and docs share those files, with different manifests.du -sh <pkg>/dist — equal sizes are the accumulation check.git status stays clean: nothing generated may become tracked.astro-dev skill).public/ except copy-assetstmp-assets/, and is listed in the package's copies (and syncDirs when it changes during dev)turbo.json if a new dependency appearedgit status clean; pnpm run type-check clean without prebuilt assets© tabler, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/build-pipeline of tabler/tabler.
Open the folder on GitHubat commit c2a7cbf
Tabler Asset Pipeline 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tabler Asset Pipeline this skilltabler/tabler | 42k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Live UX PolishEveryInc/compound-engineering-plugin | 25k | — | ~777 | Automated safety check: Pass | MIT | |
| Frontend UI FunctionalvictorGPT/vibeusage | 130 | — | ~939 | Automated safety check: Pass | MIT | |
| Deno Frontend Developmentdenoland/skills | 100 | — | ~783 | Automated safety check: Pass | MIT | |
| Quasar Skilldskilld-dev/vue-ecosystem-skills | 181 | — | ~1.6k | Automated safety check: Pass | MIT | |
| React Router Developmentremix-run/react-router | 57k | 1 repos | ~1.5k | Automated safety check: Pass | MIT |
EveryInc/compound-engineering-plugin
Collects your feedback on a running feature, typed or spoken and drawn in the browser, and turns it into focused UX fixes saved as local commits.
victorGPT/vibeusage
A skill your agent uses when building or refactoring functional React/Vite/Tailwind UI pages, templates, or component libraries that need consistent structure, tokenized styling, accessibility…
denoland/skills
Chooses between running regular npm frontend frameworks under Deno and building with Fresh, Deno's island-architecture framework, with Fresh 2.x guidance.
skilld-dev/vue-ecosystem-skills
Build, configure, and debug apps with the Quasar framework (quasar npm package, v2.33.1).
remix-run/react-router
Guides work on React Router apps by first identifying whether the app uses Framework, Data or Declarative mode, then loading the matching reference and the installed package docs.
logue/vite-vuetify-ts-starter
Vue Material Component Framework. An agent skill from logue/vite-vuetify-ts-starter.
tabler/tabler
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.
tabler/tabler
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.
tabler/tabler
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.
tabler/tabler
Writes or updates the classnames front matter that renders the class table at the end of a Tabler component docs page.
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.
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.
Categories
Explains which build step writes each asset directory in the Tabler repo and how to fix missing, stale or duplicated CSS and JS files. Pages in the Tabler repo are rendered by Astro, while CSS, JavaScript, fonts and images arrive through a separate asset pipeline. The skill maps each directory to the step that writes it: core/dist from @tabler/core, tmp-assets in the preview and docs packages, public/ from the copy-assets integration, and dist/ from astro build.
Tabler Asset Pipeline fits situations like: A page returns 404 for /dist/css/tabler.css during development; assets are missing, stale or duplicated after a rebuild; A watcher's output disappears after restarting the dev server; before editing .build/, an asset manifest in astro.config.mjs or the dev scripts.
Run `npx skills add tabler/tabler --skill build-pipeline -a claude-code`. Or copy the skill folder (.agents/skills/build-pipeline in tabler/tabler) into .claude/skills/build-pipeline in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tabler/tabler --skill build-pipeline -a codex`. Or copy the skill folder (.agents/skills/build-pipeline in tabler/tabler) into .agents/skills/build-pipeline in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tabler/tabler --skill build-pipeline -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/build-pipeline, .gemini/skills/build-pipeline, .github/skills/build-pipeline and .opencode/skills/build-pipeline in your project.
Going by SKILL.md and its folder, Tabler Asset Pipeline needs the command-line tools its instructions call (pnpm, git and turbo). Our summary lists: A checkout of the Tabler repository.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Tabler Asset Pipeline is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Tabler Asset Pipeline: Live UX Polish (EveryInc/compound-engineering-plugin, 25k stars), Frontend UI Functional (victorGPT/vibeusage, 130 stars), Deno Frontend Development (denoland/skills, 100 stars) and Quasar Skilld (skilld-dev/vue-ecosystem-skills, 181 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tabler (a GitHub organization) maintains it in tabler/tabler, which has 41,833 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 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.