Agent skill

Tabler Asset Pipeline

by tabler in tabler/tabler

Explains which build step writes each asset directory in the Tabler repo and how to fix missing, stale or duplicated CSS and JS files.

MITAuto-check passedFrontend & Design

Install Tabler Asset Pipeline

skills CLI
$ npx skills add tabler/tabler --skill build-pipeline -a claude-code

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

GitHub CLI
$ gh skill install tabler/tabler build-pipeline --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/build-pipeline .claude/skills/build-pipeline && 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
build-pipeline
GitHub stars
42k
Token cost
~1.7k tokens
SKILL.md length
915 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Explains which build step writes each asset directory in the Tabler repo and how to fix missing, stale or duplicated CSS and JS files.

  • Works in 7 steps: Who writes what → copy-assets (.build/copy-assets.ts) → Ordering → …
  • A page returns 404 for /dist/css/tabler.css during development
  • SKILL.md covers 1. Who writes what, 2. copy-assets…, 3. Ordering and 4. Traps already paid for, plus 3 more sections
  • Calls pnpm, git and turbo

What it does

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.

When your agent uses it

  • 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

Example prompts

  • “The preview site 404s on /dist/css/tabler.css since I restarted dev. Work out which step should have written it.”
  • “Why does the docs public folder keep growing between builds?”
  • “I want to add a new CSS watcher to the preview package. Where should it write its output?”

Requirements

  • A checkout of the Tabler repository

Workflow steps

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

  1. Who writes what
  2. copy-assets (.build/copy-assets.ts)
  3. Ordering
  4. Traps already paid for
  5. Diagnosing
  6. When you change the pipeline
  7. Checklist

What it can do on your machine

Read from SKILL.md and the folder at commit c2a7cbf. 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
    • git
    • turbo

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

  • Network

    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.

  • 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 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.

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

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 c2a7cbf, republished under its MIT licence (© tabler). 915 words, ~1,745 tokens.

Download SKILL.mdSave it as .claude/skills/build-pipeline/SKILL.md (or your agent's skills folder).
name
build-pipeline
description
Understand or repair the Tabler asset pipeline — `core/dist`, `tmp-assets/`, the generated `public/` directories, the `copy-assets` Astro integration, `build-css.ts`, the vite/terser JS builds and the turbo dev graph. Use when assets are missing, stale, duplicated or growing between builds, when a watcher's output disappears after a restart, when a page 404s on `/dist/css/tabler.css`, and before editing anything under `.build/`, a package's asset manifest in `astro.config.mjs`, or the dev/build scripts.

The asset pipeline

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.

1. Who writes what

DirectoryWritten byNotes
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 onlyfully generated, wiped and rebuilt on every Astro start
<pkg>/dist/astro buildthe 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.

2. copy-assets (.build/copy-assets.ts)

An Astro integration, configured per package in astro.config.mjs:

  • On 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.
  • It is skipped when the Astro command is sync, so astro check (and CI's type-check job) does not need built workspace assets.
  • In dev it watches 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.

3. Ordering

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.

4. Traps already paid for

Do not undo these; each has a comment at the site:

  • Build output must not be an Astro output dir. 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.
  • No leading-dot output path. terser's CLI --source-map parser rejects a path segment starting with a dot (.build/out/…) with a bogus "not a supported option".
  • One write per output file. 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).
  • Two environment variables, two questions. 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.
  • Vendor copies are not pages. 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.
Show full SKILL.md (313 more words)Show less

5. Diagnosing

Work down this list; each step is cheap:

  1. 404 on /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.
  2. Assets vanished after restarting dev — something wrote into 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.
  3. CSS/JS edits do not appear — the watcher is not running (started astro dev alone instead of the package's dev script), or its output dir is not in syncDirs.
  4. Stale content that survives a rebuild — pnpm --dir <pkg> run clean, then dev:prepare.
  5. dist/ grows between identical builds — an output dir is nested inside another copy step (see the first trap).
  6. CI type-check fails on missing assets — something made 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.

6. When you change the pipeline

  • Verify both paths: pnpm --dir <pkg> run dev and a clean pnpm --dir <pkg> run build.
  • Verify both packages when the change is in .build/ — preview and docs share those files, with different manifests.
  • Run the build twice in a row and compare du -sh <pkg>/dist — equal sizes are the accumulation check.
  • Confirm git status stays clean: nothing generated may become tracked.
  • Do not start a build while a dev server is running (astro-dev skill).

7. Checklist

  • Nothing writes into public/ except copy-assets
  • New generated output lands in tmp-assets/, and is listed in the package's copies (and syncDirs when it changes during dev)
  • Cross-package ordering added to turbo.json if a new dependency appeared
  • Dev and clean build both verified, build run twice with stable output size
  • git 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

Files

Just SKILL.md in .agents/skills/build-pipeline of tabler/tabler.

Open the folder on GitHubat commit c2a7cbf

Compare with similar skills

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.

Tabler Asset Pipeline compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tabler Asset Pipeline this skilltabler/tabler42k—~1.7kAutomated safety check: PassMIT
Live UX PolishEveryInc/compound-engineering-plugin25k—~777Automated safety check: PassMIT
Frontend UI FunctionalvictorGPT/vibeusage130—~939Automated safety check: PassMIT
Deno Frontend Developmentdenoland/skills100—~783Automated safety check: PassMIT
Quasar Skilldskilld-dev/vue-ecosystem-skills181—~1.6kAutomated safety check: PassMIT
React Router Developmentremix-run/react-router57k1 repos~1.5kAutomated safety check: PassMIT

Similar skills

  • 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.

    25k GitHub stars~777 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Frontend UI Functional

    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…

    130 GitHub stars~939 tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed
  • Official

    Chooses between running regular npm frontend frameworks under Deno and building with Fresh, Deno's island-architecture framework, with Fresh 2.x guidance.

    100 GitHub stars~783 tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed
  • Quasar Skilld

    skilld-dev/vue-ecosystem-skills

    Build, configure, and debug apps with the Quasar framework (quasar npm package, v2.33.1).

    181 GitHub stars~1.6k tokensUpdated 17 days ago
    Frontend & DesignAuto-check passed
  • React Router Development

    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.

    57k GitHub starsUsed in 1 repo~1.5k 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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    Auto-check passed
  • 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.

    42k GitHub stars~1.4k tokensUpdated yesterday
    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 yesterday
    Auto-check passed

Works with

Questions about Tabler Asset Pipeline

What does Tabler Asset Pipeline do?

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.

When should I use Tabler Asset Pipeline?

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.

How do I install Tabler Asset Pipeline in Claude Code?

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.

How do I install Tabler Asset Pipeline in Codex?

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.

Can I use Tabler Asset Pipeline 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 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.

What does Tabler Asset Pipeline need to run?

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.

Does Tabler Asset Pipeline access the network?

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.

Is Tabler Asset Pipeline 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 Asset Pipeline use?

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.

How many tokens does Tabler Asset Pipeline use?

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.

What are the alternatives to Tabler Asset Pipeline?

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.

Who maintains Tabler Asset Pipeline?

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.