Agent skill

Boneyard

by 0xGF in 0xGF/boneyard

Use boneyard-js to add, configure, debug, or rebuild skeleton screens.

MITAuto-check: notesFrontend & Design

Install Boneyard

skills CLI
$ npx skills add 0xGF/boneyard --skill boneyard -a claude-code

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

GitHub CLI
$ gh skill install 0xGF/boneyard boneyard --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/0xGF/boneyard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/boneyard .claude/skills/boneyard && 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
boneyard
GitHub stars
7.5k
Token cost
~2.2k tokens
SKILL.md length
728 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Use boneyard-js to add, configure, debug, or rebuild skeleton screens.

  • Works in 3 steps: Explicit initialBones prop (highest… → Registry lookup by name (from registry.js) → Fixture fallback (only during CLI build…
  • Working with Skeleton components
  • SKILL.md covers Architecture, Config file…, Common tasks and Debugging checklist
  • Calls npx; needs SESSION_TOKEN and API_TOKEN

What it does

Boneyard is an agent skill from 0xGF/boneyard. Use boneyard-js to add, configure, debug, or rebuild skeleton screens. Triggers when working with Skeleton components, bones JSON, the boneyard CLI, fixtures, leafTags, snapshotConfig, skeleton loading states, or boneyard.config.json.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design. It works with Svelte, Angular, Preact and React. The repository describes itself as: Auto generated skeleton loading framework. The licence is MIT.

When your agent uses it

  • Working with Skeleton components
  • The boneyard CLI
  • Skeleton loading states
  • Boneyard.config.json

Example prompts

  • “/boneyard”

Requirements

  • Node.js
  • A credential in SESSION_TOKEN
  • A credential in API_TOKEN
  • Pre-approved tools (allowed-tools): Bash, Read, Edit, Write, Glob, Grep, Agent

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Explicit initialBones prop (highest priority)
  2. Registry lookup by name (from registry.js)
  3. Fixture fallback (only during CLI build mode when window.__BONEYARD_BUILD === true)

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Edit
    • Write
    • Glob
    • Grep
    • Agent

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

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

  • Network

    No URLs in SKILL.md. Its commands use npx, 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 these keys or tokens, usually read from environment variables:

    • SESSION_TOKEN
    • API_TOKEN

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

Context cost

Boneyard loads about 2.2k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 728 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Edit, Write, Glob, Grep, Agent

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 0xGF/boneyard at commit b7597f5, republished under its MIT licence (© 0xGF). 728 words, ~2,222 tokens.

Download SKILL.mdSave it as .claude/skills/boneyard/SKILL.md (or your agent's skills folder).
name
boneyard
description
Use boneyard-js to add, configure, debug, or rebuild skeleton screens. Triggers when working with Skeleton components, bones JSON, the boneyard CLI, fixtures, leafTags, snapshotConfig, skeleton loading states, or boneyard.config.json.
allowed-tools
Bash, Read, Edit, Write, Glob, Grep, Agent

Boneyard Skeleton Skill

You are an expert on boneyard-js, a skeleton screen generator that snapshots real UI into positioned rectangle "bones". Use this knowledge to help with any boneyard-related task.

Architecture

Core files (in packages/boneyard/)
  • src/react.tsx — <Skeleton> React component (also exports configureBoneyard, registerBones)
  • src/preact.tsx — Native Preact integration (no compat needed)
  • src/Skeleton.svelte — Svelte 5 component
  • src/Skeleton.vue — Vue component
  • src/angular.ts — Angular component
  • src/native.tsx / src/react-native.tsx — React Native
  • src/extract.ts — snapshotBones() DOM walker, fromElement() descriptor extractor
  • src/shared.ts — bone registry, animation constants (SHIMMER, PULSE, DEFAULTS), resolveResponsive
  • src/types.ts — SnapshotConfig, Bone, CompactBone, ResponsiveBones
  • src/runtime.ts — vanilla renderBones() for non-React usage
  • bin/cli.js — CLI entry (boneyard-js build)
Package exports
  • boneyard-js — snapshotBones, renderBones, fromElement
  • boneyard-js/react — Skeleton, registerBones, configureBoneyard
  • boneyard-js/preact — Skeleton, registerBones, configureBoneyard
  • boneyard-js/native — Skeleton, registerBones, configureBoneyard (React Native)
  • boneyard-js/svelte — Skeleton component, registerBones
  • boneyard-js/vue — Skeleton component, registerBones, configureBoneyard
  • boneyard-js/angular — SkeletonComponent, registerBones, configureBoneyard
  • boneyard-js/vite — boneyardPlugin() Vite plugin
Bones format

Compact array: [x%, y_px, w%, h_px, borderRadius, isContainer?]

  • x and w are percentages of container width
  • y and h are pixels
  • borderRadius is number (px) or string ("50%")
  • isContainer (optional 6th element, truthy) — container bones are skipped during rendering. They represent parent backgrounds and would cause opacity overlap if rendered alongside child bones.
Bone resolution priority
  1. Explicit initialBones prop (highest priority)
  2. Registry lookup by name (from registry.js)
  3. Fixture fallback (only during CLI build mode when window.__BONEYARD_BUILD === true)
Animation constants (in shared.ts)

All frameworks import from shared.ts — single source of truth:

ts
SHIMMER = { angle: 110, start: 30, end: 70, speed: '2s', lightHighlight: '#f7f7f7', darkHighlight: '#2c2c2c' }
PULSE = { speed: '1.8s', lightAdjust: 0.3, darkAdjust: 0.02 }
DEFAULTS = { web: { light: '#f0f0f0', dark: '#222222' }, native: { light: '#f0f0f0', dark: '#222222' } }
Dark mode

Detected via .dark class on <html> or any parent element (standard Tailwind convention). Does NOT use prefers-color-scheme — gives the app developer explicit control. When .dark is present, darkColor and darkShimmerColor are used.

SnapshotConfig options
ts
{
  leafTags?: string[]              // Tags treated as atomic bones (merged with defaults: p,h1-h6,li,td,th)
  captureRoundedBorders?: boolean  // Capture bordered+rounded elements even without bg (default: true)
  excludeTags?: string[]           // Skip these tags entirely
  excludeSelectors?: string[]      // Skip elements matching CSS selectors
}

Config file (boneyard.config.json)

The primary customization point. Controls both CLI build and runtime defaults. Runtime options are baked into the generated registry.js via configureBoneyard().

json
{
  "breakpoints": [375, 768, 1280],
  "out": "./src/bones",
  "wait": 800,
  "color": "#e5e5e5",
  "darkColor": "#2a2a2a",
  "animate": "shimmer",
  "shimmerColor": "#ebebeb",
  "darkShimmerColor": "#333333",
  "speed": "2s",
  "shimmerAngle": 110,
  "stagger": false,
  "transition": false,
  "boneClass": "",
  "resolveEnvVars": true,
  "auth": {
    "cookies": [{ "name": "session", "value": "env[SESSION_TOKEN]", "domain": "localhost" }],
    "headers": { "Authorization": "Bearer env[API_TOKEN]" }
  }
}
Build-time options
KeyDefaultDescription
breakpoints[375, 768, 1280]Viewport widths captured by CLI (auto-detects Tailwind)
out./src/bonesOutput directory
wait800ms to wait after page load before capturing
Runtime options (baked into registry.js)
KeyDefaultDescription
color#f0f0f0Bone fill color (light mode)
darkColor#222222Bone fill color (dark mode, .dark class)
animate"pulse"Animation: "pulse", "shimmer", or "solid"
shimmerColor#f7f7f7Shimmer highlight color (light mode)
darkShimmerColor#2c2c2cShimmer highlight color (dark mode)
speed"2s" (shimmer) / "1.8s" (pulse)Animation duration
shimmerAngle110Shimmer gradient angle in degrees
staggerfalseDelay between bones in ms (true = 80ms)
transitionfalseFade transition when loading ends in ms (true = 300ms)
boneClass—CSS class applied to each bone element
Precedence

Per-component props > config file (via configureBoneyard()) > package defaults in shared.ts. CLI flags override config file for build options.

Common tasks

Adding a skeleton to a component
tsx
import { Skeleton } from 'boneyard-js/react'

<Skeleton name="my-component" loading={isLoading}>
  <MyComponent data={data} />
</Skeleton>
Show full SKILL.md (296 more words)Show less
Using a fixture (when real data isn't available at build time)
tsx
<Skeleton
  name="my-component"
  loading={isLoading}
  fixture={<MyFixture />}
  snapshotConfig={{ leafTags: ["section"] }}
>
  <MyComponent data={data} />
</Skeleton>

Key pattern: use <section> (or any custom tag) as leaf elements in the fixture, then add that tag to leafTags so the extractor treats each as a single flat bone without recursing into children.

Excluding elements from capture
tsx
<nav data-no-skeleton>
  {/* No bone will be generated */}
</nav>

Or via snapshotConfig:

tsx
<Skeleton snapshotConfig={{ excludeSelectors: ['.icon', 'svg'], excludeTags: ['nav'] }}>
Running the CLI
bash
# Auto-detect dev server
npx boneyard-js build

# Explicit URL + output
npx boneyard-js build http://localhost:PORT --out src/bones

# Force rebuild all (skip hash check)
npx boneyard-js build --force

# Watch mode (re-capture on HMR)
npx boneyard-js build --watch

# Custom breakpoints
npx boneyard-js build --breakpoints 375,640,768,1024,1280,1536

# React Native mode
npx boneyard-js build --native --out ./bones
Skeleton props reference
PropTypeDefaultDescription
loadingbooleanrequiredShow skeleton vs children
childrenReactNoderequiredReal content
namestringrequiredRegistry key + CLI identifier
initialBonesResponsiveBones—Pre-generated bones (overrides registry)
colorstring#f0f0f0Bone fill color (light mode) — any CSS color (hex, rgba, hsl, etc.)
darkColorstring#222222Dark mode bone fill color (.dark class) — any CSS color
animateAnimationStyle'pulse'"pulse", "shimmer", "solid" (also accepts boolean)
staggernumber | booleanfalseStagger delay (true=80ms)
transitionnumber | booleanfalseFade-out duration (true=300ms)
boneClassstring—CSS class per bone
classNamestring—Container class
fallbackReactNode—Shown when loading + no bones
fixtureReactNode—Mock content for CLI capture
snapshotConfigSnapshotConfig—Controls bone extraction

Debugging checklist

  1. Skeleton shows nothing: Check that registry.js is imported in app entry AND bones JSON exists for that name
  2. Too many bones / internal shapes: Add leafTags to snapshotConfig and rebuild
  3. Bones don't match layout: Rebuild with --force to regenerate from current DOM
  4. Wrong breakpoint: Check container width — bones resolve using nearest <= breakpoint
  5. Dark mode not detected: Skeleton uses .dark class on <html> or ancestor. Does NOT use prefers-color-scheme
  6. CLI finds no skeletons: Components need loading={false} (or a fixture) so the real UI renders for capture
  7. Opacity overlap / double-layering: Container bones (c: true) should be skipped in rendering — if they're not, the filter is missing
  8. Shimmer not visible: Check that shimmerColor has enough contrast with color — defaults are #f7f7f7 on #f0f0f0

© 0xGF, 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 .claude/skills/boneyard of 0xGF/boneyard.

Open the folder on GitHubat commit b7597f5

Compare with similar skills

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

Boneyard compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Boneyard this skill0xGF/boneyard7.5k—~2.2kAutomated safety check: NotesMIT
Solar Iconssaoudi-h/solar-icons186—~2.1kAutomated safety check: PassMIT
Markstream InstallSimon-He95/markstream-vue3k—~2.2kAutomated safety check: PassMIT
Tailwind To Stylexshadcn-labs/shadcn-cssinjs123—~2.7kAutomated safety check: PassMIT
Kb Web ScanningCommunity-Access/accessibility-agents423—~1.2kAutomated safety check: PassMIT
Tanstack Querybskimball/tanstack-hono1191 repos~5.4kAutomated safety check: PassMIT

Similar skills

  • Solar Icons

    saoudi-h/solar-icons

    Add Solar Icons via @solar-icons/cli to any React, Vue, Svelte, Solid, Angular, React Native, Nuxt, Static, vanilla JS, or Laravel Blade project.

    186 GitHub stars~2.1k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Markstream Install

    Simon-He95/markstream-vue

    Install and wire markstream-vue, markstream-react, markstream-vue2, markstream-angular, or markstream-svelte into an existing repository.

    3k GitHub stars~2.2k tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Tailwind To Stylex

    shadcn-labs/shadcn-cssinjs

    Migrate TailwindCSS to StyleX. An agent skill from shadcn-labs/shadcn-cssinjs.

    123 GitHub stars~2.7k tokensUpdated 28 days ago
    Frontend & DesignAuto-check passed
  • Kb Web Scanning

    Community-Access/accessibility-agents

    Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.

    423 GitHub stars~1.2k tokensUpdated 16 days ago
    Frontend & DesignAuto-check passed
  • Tanstack Query

    bskimball/tanstack-hono

    Powerful asynchronous state management, server-state utilities, and data fetching for TS/JS, React, Vue, Solid, Svelte & Angular.

    119 GitHub starsUsed in 1 repo~5.4k tokens
    Frontend & DesignAuto-check passed
  • Comment Pass

    Ocean-Industries-Concept-Lab/openbridge-webcomponents

    Rewrite the comments under a path to the repo's comment rules (why-only, ≤ 3 lines, no history, no filler).

    102 GitHub stars~297 tokensUpdated yesterday
    Frontend & DesignAuto-check passed

Questions about Boneyard

What does Boneyard do?

Use boneyard-js to add, configure, debug, or rebuild skeleton screens. Boneyard is an agent skill from 0xGF/boneyard. Use boneyard-js to add, configure, debug, or rebuild skeleton screens.

When should I use Boneyard?

Boneyard fits situations like: working with Skeleton components; the boneyard CLI; skeleton loading states; boneyard.config.json.

How do I install Boneyard in Claude Code?

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

How do I install Boneyard in Codex?

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

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

What does Boneyard need to run?

Going by SKILL.md and its folder, Boneyard needs the command-line tools its instructions call (npx) and credentials named SESSION_TOKEN and API_TOKEN. Our summary lists: Node.js; A credential in SESSION_TOKEN; A credential in API_TOKEN. Its frontmatter pre-approves these tools: Bash, Read, Edit, Write, Glob, Grep, Agent.

Does Boneyard access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Boneyard safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Boneyard use?

Boneyard 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 Boneyard use?

About 2.2k tokens (SKILL.md is roughly 8.9k 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 Boneyard?

Skills that share tags, products or a category with Boneyard: Solar Icons (saoudi-h/solar-icons, 186 stars), Markstream Install (Simon-He95/markstream-vue, 3k stars), Tailwind To Stylex (shadcn-labs/shadcn-cssinjs, 123 stars) and Kb Web Scanning (Community-Access/accessibility-agents, 423 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Boneyard?

0xGF (a GitHub user) maintains it in 0xGF/boneyard, which has 7,472 GitHub stars. The repository was last updated on August 31, 2026.

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