{"owner":"naver","repo":"billboard.js","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md",".github/copilot-instructions.md"],"skills":{"AGENTS.md":"# AGENTS.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nbillboard.js is a D3.js v6+ based JavaScript charting library (MIT). Written in TypeScript, it supports SVG rendering with modular ESM tree-shaking for chart types and interactions.\n\n## Common Commands\n\n```bash\n# Dev server\npnpm start\n\n# Build (full: production + packaged + theme + plugin + esm + cjs)\npnpm run build\n\n# Build dev only\npnpm run build:dev\n\n# Lint\npnpm run lint\n\n# Format\npnpm run format\n\n# Run all tests (vitest + playwright/chromium, browser mode)\npnpm test\n\n# Run a single test file\npnpm exec vitest test/shape/bar-spec.ts\n\n# Run tests matching a pattern\npnpm exec vitest -t \"pattern\"\n\n# Coverage\npnpm run coverage\n```\n\nPackage manager: `pnpm@10.16.0` (corepack)\n\n## Architecture\n\n### Entry Points\n\n- `src/index.ts` — Full bundle: auto-registers all shape/interaction modules\n- `src/index.esm.ts` — ESM entry: exports individual shape types (`area`, `bar`, `line`, etc.) and interactions (`zoom`, `subchart`, `selection`) for tree-shaking\n- `src/core.ts` — `bb` namespace object with `generate()`, `defaults()`, `instance[]`\n\n### Core Classes\n\n- **`Chart`** (`src/Chart/Chart.ts`) — Public API class returned by `bb.generate()`. Methods split across `src/Chart/api/*.ts` files (data, load, export, tooltip, zoom, etc.)\n- **`ChartInternal`** (`src/ChartInternal/ChartInternal.ts`) — Internal implementation. Functionality mixed in via `extend()` from submodules:\n  - `data/` — data conversion, loading\n  - `interactions/` — drag, eventrect, flow, subchart, zoom\n  - `internals/` — redraw, scale, domain, size, color, legend, tooltip, format, text, title, style, type, class, category, transform\n  - `shape/` — rendering logic per chart type (arc, area, bar, bubble, candlestick, funnel, gauge, line, point, polar, radar, treemap)\n\n### Module Resolution System\n\n`src/config/resolver/shape.ts` and `interaction.ts` use a lazy self-replacing pattern: each exported function (e.g., `line()`, `bar()`) extends `ChartInternal.prototype` with the needed modules on first call, then replaces itself with a function returning the type constant. This enables tree-shaking — unused chart types are never loaded.\n\n### Configuration\n\n- `src/config/Options/` — Default option definitions organized by category (`axis/`, `common/`, `data/`, `interaction/`, `shape/`)\n- `src/config/Store/` — State management\n- `src/config/const.ts` — Chart type constants (`TYPE`)\n- `src/config/classes.ts` — CSS class name constants\n\n### Plugins\n\n`src/Plugin/` — Plugin base class and built-in plugins (bubblecompare, sparkline, stanford, tableview, textoverlap). Each plugin extends `Plugin.ts`.\n\n### Utilities\n\n`src/module/` — Shared utilities: `util.ts` (main helpers), `Cache.ts`, `browser.ts` (window/document refs), `generator.ts`, `sanitize.ts`\n\n### Canvas File Naming\n\n`src/canvas/` filenames follow the exported module name:\n\n- Files whose primary export is a class must match the class name exactly, e.g. `CanvasAxisRenderer.ts`, `CanvasEngine.ts`, `HitDetector.ts`, `CanvasPainter.ts`, `CanvasRenderer.ts`, `CanvasTheme.ts`.\n- Non-class helper modules start with a lowercase letter, e.g. `util.ts`.\n- When adding or renaming canvas files, keep imports aligned with this rule.\n\n### Styles\n\n`src/scss/` — SCSS sources for base theme and theme variants (dark, datalab, graph, insight, modern)\n\n## Test Structure\n\nTests use **Vitest** with `@vitest/browser` (Playwright/Chromium). Test files: `test/**/*-spec.ts`\n\nMirror structure: `test/shape/` for shape tests, `test/api/` for API tests, `test/interactions/` for interaction tests, `test/internals/` for internal logic tests.\n\nTest timeout: 3500ms. Hook timeout: 5000ms.\n\n## Commit Convention\n\nFollows [Conventional Commits](https://www.conventionalcommits.org/):\n\n```\n<type>(<scope>): <description>\n\n[optional body]\n\nRef #<issue>\n```\n\nTypes: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `skip`\n\nScope is typically the module name (e.g., `Axis`, `tooltip`, `data`).\n",".github/copilot-instructions.md":"# Copilot Guidelines\n\n## Introduction\n\nThese is contribution guidelines. Please also review our [Contributing Guideline](https://github.com/naver/billboard.js/blob/master/CONTRIBUTING.md).\n\n## Linting\n\nPlease review [eslint](https://github.com/naver/billboard.js/blob/master/eslint.config.js) configuration.\n\n## Testing\n\nBasically we use vitest for testing framework and test files are located in `./test` directory.\n\n"},"files":{"AGENTS.md":"# AGENTS.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nbillboard.js is a D3.js v6+ based JavaScript charting library (MIT). Written in TypeScript, it supports SVG rendering with modular ESM tree-shaking for chart types and interactions.\n\n## Common Commands\n\n```bash\n# Dev server\npnpm start\n\n# Build (full: production + packaged + theme + plugin + esm + cjs)\npnpm run build\n\n# Build dev only\npnpm run build:dev\n\n# Lint\npnpm run lint\n\n# Format\npnpm run format\n\n# Run all tests (vitest + playwright/chromium, browser mode)\npnpm test\n\n# Run a single test file\npnpm exec vitest test/shape/bar-spec.ts\n\n# Run tests matching a pattern\npnpm exec vitest -t \"pattern\"\n\n# Coverage\npnpm run coverage\n```\n\nPackage manager: `pnpm@10.16.0` (corepack)\n\n## Architecture\n\n### Entry Points\n\n- `src/index.ts` — Full bundle: auto-registers all shape/interaction modules\n- `src/index.esm.ts` — ESM entry: exports individual shape types (`area`, `bar`, `line`, etc.) and interactions (`zoom`, `subchart`, `selection`) for tree-shaking\n- `src/core.ts` — `bb` namespace object with `generate()`, `defaults()`, `instance[]`\n\n### Core Classes\n\n- **`Chart`** (`src/Chart/Chart.ts`) — Public API class returned by `bb.generate()`. Methods split across `src/Chart/api/*.ts` files (data, load, export, tooltip, zoom, etc.)\n- **`ChartInternal`** (`src/ChartInternal/ChartInternal.ts`) — Internal implementation. Functionality mixed in via `extend()` from submodules:\n  - `data/` — data conversion, loading\n  - `interactions/` — drag, eventrect, flow, subchart, zoom\n  - `internals/` — redraw, scale, domain, size, color, legend, tooltip, format, text, title, style, type, class, category, transform\n  - `shape/` — rendering logic per chart type (arc, area, bar, bubble, candlestick, funnel, gauge, line, point, polar, radar, treemap)\n\n### Module Resolution System\n\n`src/config/resolver/shape.ts` and `interaction.ts` use a lazy self-replacing pattern: each exported function (e.g., `line()`, `bar()`) extends `ChartInternal.prototype` with the needed modules on first call, then replaces itself with a function returning the type constant. This enables tree-shaking — unused chart types are never loaded.\n\n### Configuration\n\n- `src/config/Options/` — Default option definitions organized by category (`axis/`, `common/`, `data/`, `interaction/`, `shape/`)\n- `src/config/Store/` — State management\n- `src/config/const.ts` — Chart type constants (`TYPE`)\n- `src/config/classes.ts` — CSS class name constants\n\n### Plugins\n\n`src/Plugin/` — Plugin base class and built-in plugins (bubblecompare, sparkline, stanford, tableview, textoverlap). Each plugin extends `Plugin.ts`.\n\n### Utilities\n\n`src/module/` — Shared utilities: `util.ts` (main helpers), `Cache.ts`, `browser.ts` (window/document refs), `generator.ts`, `sanitize.ts`\n\n### Canvas File Naming\n\n`src/canvas/` filenames follow the exported module name:\n\n- Files whose primary export is a class must match the class name exactly, e.g. `CanvasAxisRenderer.ts`, `CanvasEngine.ts`, `HitDetector.ts`, `CanvasPainter.ts`, `CanvasRenderer.ts`, `CanvasTheme.ts`.\n- Non-class helper modules start with a lowercase letter, e.g. `util.ts`.\n- When adding or renaming canvas files, keep imports aligned with this rule.\n\n### Styles\n\n`src/scss/` — SCSS sources for base theme and theme variants (dark, datalab, graph, insight, modern)\n\n## Test Structure\n\nTests use **Vitest** with `@vitest/browser` (Playwright/Chromium). Test files: `test/**/*-spec.ts`\n\nMirror structure: `test/shape/` for shape tests, `test/api/` for API tests, `test/interactions/` for interaction tests, `test/internals/` for internal logic tests.\n\nTest timeout: 3500ms. Hook timeout: 5000ms.\n\n## Commit Convention\n\nFollows [Conventional Commits](https://www.conventionalcommits.org/):\n\n```\n<type>(<scope>): <description>\n\n[optional body]\n\nRef #<issue>\n```\n\nTypes: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `skip`\n\nScope is typically the module name (e.g., `Axis`, `tooltip`, `data`).\n",".github/copilot-instructions.md":"# Copilot Guidelines\n\n## Introduction\n\nThese is contribution guidelines. Please also review our [Contributing Guideline](https://github.com/naver/billboard.js/blob/master/CONTRIBUTING.md).\n\n## Linting\n\nPlease review [eslint](https://github.com/naver/billboard.js/blob/master/eslint.config.js) configuration.\n\n## Testing\n\nBasically we use vitest for testing framework and test files are located in `./test` directory.\n\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# AGENTS.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nbillboard.js is a D3.js v6+ based JavaScript charting library (MIT). Written in TypeScript, it supports SVG rendering with modular ESM tree-shaking for chart types and interactions.\n\n## Common Commands\n\n```bash\n# Dev server\npnpm start\n\n# Build (full: production + packaged + theme + plugin + esm + cjs)\npnpm run build\n\n# Build dev only\npnpm run build:dev\n\n# Lint\npnpm run lint\n\n# Format\npnpm run format\n\n# Run all tests (vitest + playwright/chromium, browser mode)\npnpm test\n\n# Run a single test file\npnpm exec vitest test/shape/bar-spec.ts\n\n# Run tests matching a pattern\npnpm exec vitest -t \"pattern\"\n\n# Coverage\npnpm run coverage\n```\n\nPackage manager: `pnpm@10.16.0` (corepack)\n\n## Architecture\n\n### Entry Points\n\n- `src/index.ts` — Full bundle: auto-registers all shape/interaction modules\n- `src/index.esm.ts` — ESM entry: exports individual shape types (`area`, `bar`, `line`, etc.) and interactions (`zoom`, `subchart`, `selection`) for tree-shaking\n- `src/core.ts` — `bb` namespace object with `generate()`, `defaults()`, `instance[]`\n\n### Core Classes\n\n- **`Chart`** (`src/Chart/Chart.ts`) — Public API class returned by `bb.generate()`. Methods split across `src/Chart/api/*.ts` files (data, load, export, tooltip, zoom, etc.)\n- **`ChartInternal`** (`src/ChartInternal/ChartInternal.ts`) — Internal implementation. Functionality mixed in via `extend()` from submodules:\n  - `data/` — data conversion, loading\n  - `interactions/` — drag, eventrect, flow, subchart, zoom\n  - `internals/` — redraw, scale, domain, size, color, legend, tooltip, format, text, title, style, type, class, category, transform\n  - `shape/` — rendering logic per chart type (arc, area, bar, bubble, candlestick, funnel, gauge, line, point, polar, radar, treemap)\n\n### Module Resolution System\n\n`src/config/resolver/shape.ts` and `interaction.ts` use a lazy self-replacing pattern: each exported function (e.g., `line()`, `bar()`) extends `ChartInternal.prototype` with the needed modules on first call, then replaces itself with a function returning the type constant. This enables tree-shaking — unused chart types are never loaded.\n\n### Configuration\n\n- `src/config/Options/` — Default option definitions organized by category (`axis/`, `common/`, `data/`, `interaction/`, `shape/`)\n- `src/config/Store/` — State management\n- `src/config/const.ts` — Chart type constants (`TYPE`)\n- `src/config/classes.ts` — CSS class name constants\n\n### Plugins\n\n`src/Plugin/` — Plugin base class and built-in plugins (bubblecompare, sparkline, stanford, tableview, textoverlap). Each plugin extends `Plugin.ts`.\n\n### Utilities\n\n`src/module/` — Shared utilities: `util.ts` (main helpers), `Cache.ts`, `browser.ts` (window/document refs), `generator.ts`, `sanitize.ts`\n\n### Canvas File Naming\n\n`src/canvas/` filenames follow the exported module name:\n\n- Files whose primary export is a class must match the class name exactly, e.g. `CanvasAxisRenderer.ts`, `CanvasEngine.ts`, `HitDetector.ts`, `CanvasPainter.ts`, `CanvasRenderer.ts`, `CanvasTheme.ts`.\n- Non-class helper modules start with a lowercase letter, e.g. `util.ts`.\n- When adding or renaming canvas files, keep imports aligned with this rule.\n\n### Styles\n\n`src/scss/` — SCSS sources for base theme and theme variants (dark, datalab, graph, insight, modern)\n\n## Test Structure\n\nTests use **Vitest** with `@vitest/browser` (Playwright/Chromium). Test files: `test/**/*-spec.ts`\n\nMirror structure: `test/shape/` for shape tests, `test/api/` for API tests, `test/interactions/` for interaction tests, `test/internals/` for internal logic tests.\n\nTest timeout: 3500ms. Hook timeout: 5000ms.\n\n## Commit Convention\n\nFollows [Conventional Commits](https://www.conventionalcommits.org/):\n\n```\n<type>(<scope>): <description>\n\n[optional body]\n\nRef #<issue>\n```\n\nTypes: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `skip`\n\nScope is typically the module name (e.g., `Axis`, `tooltip`, `data`).\n","category":"root","tokens":1017},{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","title":"copilot-instructions.md","content":"# Copilot Guidelines\n\n## Introduction\n\nThese is contribution guidelines. Please also review our [Contributing Guideline](https://github.com/naver/billboard.js/blob/master/CONTRIBUTING.md).\n\n## Linting\n\nPlease review [eslint](https://github.com/naver/billboard.js/blob/master/eslint.config.js) configuration.\n\n## Testing\n\nBasically we use vitest for testing framework and test files are located in `./test` directory.\n\n","category":".github","tokens":105}]}