[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71Q8F1VMHET641RF08ETR36":3,"skill-same:01M71Q8F1VMHET641RF08ETR36":233},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":24,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":14,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M71Q8F1VMHET641RF08ETR36","tsdown",null,"Bundle TypeScript and JavaScript libraries with blazing-fast speed powered by Rolldown. Use when building libraries, generating type declarations, bundling for multiple formats, or migrating from tsup.","pattanation\u002FNorvik","pattanation","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235419268?v=4","01M71M5THHYYB15ME8R2E4FCZG","Patta","01M71M5TJM1NDM992M8PDKYR2K",0,"MIT","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[5,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"when","tsup","rolldown","libraries","typescript","formats","for","speed","use","type","javascript","with","fast","bundle","bundling","2026-11-10 13:02:02",false,"---\nname: tsdown\ndescription: Bundle TypeScript and JavaScript libraries with blazing-fast speed powered by Rolldown. Use when building libraries, generating type declarations, bundling for multiple formats, or migrating from tsup.\n---\n\n# tsdown - The Elegant Library Bundler\n\nBlazing-fast bundler for TypeScript\u002FJavaScript libraries powered by Rolldown and Oxc.\n\n## Runtime Requirement\n\n`tsdown` requires **Node.js 22.18.0 or higher to run** (build-time only). However, the bundled output can target much lower Node.js versions via the [`target`](references\u002Foption-target.md) option, so libraries built with tsdown are **not locked to Node.js 22+ at runtime**.\n\nIf your package needs to support Node.js 18 \u002F 20:\n\n- **Build with Node.js 22+ in CI** (e.g. set `target: 'node18'` or `target: 'node20'`).\n- **Test the built output (or the packed tarball) on the lower Node.js versions** you intend to support — e.g. using a matrix job that runs the published package's tests on Node.js 18 \u002F 20 \u002F 22.\n\n## When to Use\n\n- Building TypeScript\u002FJavaScript libraries for npm\n- Generating TypeScript declaration files (.d.ts)\n- Bundling for multiple formats (ESM, CJS, IIFE, UMD)\n- Optimizing bundles with tree shaking and minification\n- Migrating from tsup with minimal changes\n- Building React, Vue, Solid, or Svelte component libraries\n\n## Quick Start\n\n```bash\n# Install\npnpm add -D tsdown\n\n# Basic usage\nnpx tsdown\n\n# With config file\nnpx tsdown --config tsdown.config.ts\n\n# Watch mode\nnpx tsdown --watch\n\n# Migrate from tsup\nnpx tsdown-migrate\n```\n\n## Basic Configuration\n\n```ts\nimport { defineConfig } from 'tsdown'\n\nexport default defineConfig({\n  entry: ['.\u002Fsrc\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  clean: true,\n})\n```\n\n## Core References\n\n| Topic | Description | Reference |\n|-------|-------------|-----------|\n| Getting Started | Installation, first bundle, CLI basics | [guide-getting-started](references\u002Fguide-getting-started.md) |\n| Configuration File | Config file formats, multiple configs, workspace | [option-config-file](references\u002Foption-config-file.md) |\n| CLI Reference | All CLI commands and options | [reference-cli](references\u002Freference-cli.md) |\n| Migrate from tsup | Migration guide and compatibility notes | [guide-migrate-from-tsup](references\u002Fguide-migrate-from-tsup.md) |\n| Plugins | Rolldown, Rollup, Unplugin support | [advanced-plugins](references\u002Fadvanced-plugins.md) |\n\n> For comprehensive migration assistance with complete option mappings, install the dedicated [`tsdown-migrate`](..\u002Ftsdown-migrate\u002FSKILL.md) skill: `npx skills add rolldown\u002Ftsdown --skill tsdown-migrate`\n| Hooks | Lifecycle hooks for custom logic | [advanced-hooks](references\u002Fadvanced-hooks.md) |\n| Programmatic API | Build from Node.js scripts | [advanced-programmatic](references\u002Fadvanced-programmatic.md) |\n| Rolldown Options | Pass options directly to Rolldown | [advanced-rolldown-options](references\u002Fadvanced-rolldown-options.md) |\n| CI Environment | CI detection, `'ci-only'` \u002F `'local-only'` values | [advanced-ci](references\u002Fadvanced-ci.md) |\n\n## Build Options\n\n| Option | Usage | Reference |\n|--------|-------|-----------|\n| Entry points | `entry: ['src\u002F*.ts', '!**\u002F*.test.ts']` | [option-entry](references\u002Foption-entry.md) |\n| Output formats | `format: ['esm', 'cjs', 'iife', 'umd']` | [option-output-format](references\u002Foption-output-format.md) |\n| Output directory | `outDir: 'dist'`, `outExtensions` | [option-output-directory](references\u002Foption-output-directory.md) |\n| Type declarations | `dts: true`, `dts: { sourcemap, compilerOptions, vue }` | [option-dts](references\u002Foption-dts.md) |\n| Target environment | `target: 'es2020'`, `target: 'esnext'` | [option-target](references\u002Foption-target.md) |\n| Platform | `platform: 'node'`, `platform: 'browser'` | [option-platform](references\u002Foption-platform.md) |\n| Tree shaking | `treeshake: true`, custom options | [option-tree-shaking](references\u002Foption-tree-shaking.md) |\n| Minification | `minify: true`, `minify: 'dce-only'` | [option-minification](references\u002Foption-minification.md) |\n| Source maps | `sourcemap: true`, `'inline'`, `'hidden'` | [option-sourcemap](references\u002Foption-sourcemap.md) |\n| Watch mode | `watch: true`, watch options | [option-watch-mode](references\u002Foption-watch-mode.md) |\n| Cleaning | `clean: true`, clean patterns | [option-cleaning](references\u002Foption-cleaning.md) |\n| Log level | `logLevel: 'silent'`, `failOnWarn: false` | [option-log-level](references\u002Foption-log-level.md) |\n\n## Dependency Handling\n\n| Feature | Usage | Reference |\n|---------|-------|-----------|\n| Never bundle | `deps: { neverBundle: ['react', \u002F^@myorg\\\u002F\u002F] }` | [option-dependencies](references\u002Foption-dependencies.md) |\n| Always bundle | `deps: { alwaysBundle: ['dep-to-bundle'] }` | [option-dependencies](references\u002Foption-dependencies.md) |\n| Only bundle | `deps: { onlyBundle: ['cac', 'bumpp'] }` - Whitelist | [option-dependencies](references\u002Foption-dependencies.md) |\n| Skip node_modules | `deps: { skipNodeModulesBundle: true }` | [option-dependencies](references\u002Foption-dependencies.md) |\n| Auto external | Automatic dependency\u002Fpeer\u002Foptional externalization | [option-dependencies](references\u002Foption-dependencies.md) |\n\n## Output Enhancement\n\n| Feature | Usage | Reference |\n|---------|-------|-----------|\n| Shims | `shims: true` - Add ESM\u002FCJS compatibility | [option-shims](references\u002Foption-shims.md) |\n| CJS default | `cjsDefault: true` (default) \u002F `false` | [option-cjs-default](references\u002Foption-cjs-default.md) |\n| Package exports | `exports: true` - Generate exports field | [option-package-exports](references\u002Foption-package-exports.md) |\n| CSS handling | **[experimental]** `css: { ... }` — full pipeline with preprocessors, Lightning CSS, PostCSS, CSS modules, code splitting; requires `@tsdown\u002Fcss` | [option-css](references\u002Foption-css.md) |\n| CSS modules | `css: { modules: { localsConvention: 'camelCase' } }` — scoped class names for `.module.css` files | [option-css](references\u002Foption-css.md) |\n| CSS inject | `css: { inject: true }` — preserve CSS imports in JS output | [option-css](references\u002Foption-css.md) |\n| Unbundle mode | `unbundle: true` - Preserve directory structure | [option-unbundle](references\u002Foption-unbundle.md) |\n| Root directory | `root: 'src'` - Control output directory mapping | [option-root](references\u002Foption-root.md) |\n| Executable | **[experimental]** `exe: true` - Bundle as standalone executable, cross-platform via `@tsdown\u002Fexe` | [option-exe](references\u002Foption-exe.md) |\n| Package validation | `publint: true`, `attw: true` - Validate package | [option-lint](references\u002Foption-lint.md) |\n\n## Framework & Runtime Support\n\n| Framework | Guide | Reference |\n|-----------|-------|-----------|\n| React | JSX transform, React Compiler | [recipe-react](references\u002Frecipe-react.md) |\n| Vue | SFC support, JSX | [recipe-vue](references\u002Frecipe-vue.md) |\n| Solid | SolidJS JSX transform | [recipe-solid](references\u002Frecipe-solid.md) |\n| Svelte | Svelte component libraries (source distribution recommended) | [recipe-svelte](references\u002Frecipe-svelte.md) |\n| WASM | WebAssembly modules via `rolldown-plugin-wasm` | [recipe-wasm](references\u002Frecipe-wasm.md) |\n\n## Common Patterns\n\n### Basic Library Bundle\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  clean: true,\n})\n```\n\n### Multiple Entry Points\n\n```ts\nexport default defineConfig({\n  entry: {\n    index: 'src\u002Findex.ts',\n    utils: 'src\u002Futils.ts',\n    cli: 'src\u002Fcli.ts',\n  },\n  format: ['esm', 'cjs'],\n  dts: true,\n})\n```\n\n### Browser Library (IIFE\u002FUMD)\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['iife'],\n  globalName: 'MyLib',\n  platform: 'browser',\n  minify: true,\n})\n```\n\n### React Component Library\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.tsx'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  deps: {\n    neverBundle: ['react', 'react-dom'],\n  },\n  inputOptions: {\n    jsx: { runtime: 'automatic' },\n  },\n})\n```\n\n### Preserve Directory Structure\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002F**\u002F*.ts', '!**\u002F*.test.ts'],\n  unbundle: true, \u002F\u002F Preserve file structure\n  format: ['esm'],\n  dts: true,\n})\n```\n\n### CI-Aware Configuration\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  failOnWarn: 'ci-only',  \u002F\u002F opt-in: fail on warnings in CI\n  publint: 'ci-only',\n  attw: 'ci-only',\n})\n```\n\n### WASM Support\n\n```ts\nimport { wasm } from 'rolldown-plugin-wasm'\nimport { defineConfig } from 'tsdown'\n\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  plugins: [wasm()],\n})\n```\n\n### Library with CSS and Sass\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  target: 'chrome100',\n  css: {\n    preprocessorOptions: {\n      scss: {\n        additionalData: `@use \"src\u002Fstyles\u002Fvariables\" as *;`,\n      },\n    },\n  },\n})\n```\n\n### Standalone Executable\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Fcli.ts'],\n  exe: true,\n})\n```\n\n### Cross-Platform Executable (requires `@tsdown\u002Fexe`)\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Fcli.ts'],\n  exe: {\n    targets: [\n      { platform: 'linux', arch: 'x64', nodeVersion: '25.7.0' },\n      { platform: 'darwin', arch: 'arm64', nodeVersion: '25.7.0' },\n      { platform: 'win', arch: 'x64', nodeVersion: '25.7.0' },\n    ],\n  },\n})\n```\n\n### Advanced with Hooks\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  hooks: {\n    'build:before': async (context) => {\n      console.log('Building...')\n    },\n    'build:done': async (context) => {\n      console.log('Build complete!')\n    },\n  },\n})\n```\n\n## Configuration Features\n\n### Multiple Configs\n\nExport an array for multiple build configurations:\n\n```ts\nexport default defineConfig([\n  {\n    entry: ['src\u002Findex.ts'],\n    format: ['esm', 'cjs'],\n    dts: true,\n  },\n  {\n    entry: ['src\u002Fcli.ts'],\n    format: ['esm'],\n    platform: 'node',\n  },\n])\n```\n\n### Conditional Config\n\nUse functions for dynamic configuration:\n\n```ts\nexport default defineConfig((options) => {\n  const isDev = options.watch\n  return {\n    entry: ['src\u002Findex.ts'],\n    format: ['esm', 'cjs'],\n    minify: !isDev,\n    sourcemap: isDev,\n  }\n})\n```\n\n### Workspace\u002FMonorepo\n\nUse glob patterns to build multiple packages:\n\n```ts\nexport default defineConfig({\n  workspace: 'packages\u002F*',\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n})\n```\n\n## CLI Quick Reference\n\n```bash\n# Basic commands\ntsdown                          # Build once\ntsdown --watch                  # Watch mode\ntsdown --config custom.ts       # Custom config\nnpx tsdown-migrate              # Migrate from tsup\n\n# Output options\ntsdown --format esm,cjs        # Multiple formats\ntsdown -d lib                  # Custom output directory (--out-dir)\ntsdown --minify                # Enable minification\ntsdown --dts                   # Generate declarations\ntsdown --exe                   # Bundle as standalone executable\ntsdown --unbundle              # Bundleless mode\n\n# Entry options\ntsdown src\u002Findex.ts            # Single entry\ntsdown src\u002F*.ts                # Glob patterns\ntsdown src\u002Fa.ts src\u002Fb.ts       # Multiple entries\n\n# Workspace \u002F Monorepo\ntsdown -W                      # Enable workspace mode\ntsdown -W -F my-package        # Filter specific package\ntsdown --filter \u002F^pkg-\u002F        # Filter by regex\n\n# Development\ntsdown --watch                 # Watch mode\ntsdown --sourcemap             # Generate source maps\ntsdown --clean                 # Clean output directory\ntsdown --from-vite             # Reuse Vite config\ntsdown --tsconfig tsconfig.build.json  # Custom tsconfig\n```\n\n## Best Practices\n\n1. **Always generate type declarations** for TypeScript libraries:\n   ```ts\n   { dts: true }\n   ```\n\n2. **Externalize dependencies** to avoid bundling unnecessary code:\n   ```ts\n   { deps: { neverBundle: [\u002F^react\u002F, \u002F^@myorg\\\u002F\u002F] } }\n   ```\n\n3. **Use tree shaking** for optimal bundle size:\n   ```ts\n   { treeshake: true }\n   ```\n\n4. **Enable minification** for production builds:\n   ```ts\n   { minify: true }\n   ```\n\n5. **Add shims** for better ESM\u002FCJS compatibility:\n   ```ts\n   { shims: true }  \u002F\u002F Adds __dirname, __filename, etc.\n   ```\n\n6. **Auto-generate package.json exports**:\n   ```ts\n   { exports: true }  \u002F\u002F Creates proper exports field\n   ```\n\n7. **Use watch mode** during development:\n   ```bash\n   tsdown --watch\n   ```\n\n8. **Preserve structure** for utilities with many files:\n   ```ts\n   { unbundle: true }  \u002F\u002F Keep directory structure\n   ```\n\n9. **Validate packages** in CI before publishing:\n   ```ts\n   { publint: 'ci-only', attw: 'ci-only' }\n   ```\n\n## Resources\n\n- Documentation: https:\u002F\u002Ftsdown.dev\n- GitHub: https:\u002F\u002Fgithub.com\u002Frolldown\u002Ftsdown\n- Rolldown: https:\u002F\u002Frolldown.rs\n- Migration Guide: https:\u002F\u002Ftsdown.dev\u002Fguide\u002Fmigrate-from-tsup\n","# tsdown - The Elegant Library Bundler\n\nBlazing-fast bundler for TypeScript\u002FJavaScript libraries powered by Rolldown and Oxc.\n\n## Runtime Requirement\n\n`tsdown` requires **Node.js 22.18.0 or higher to run** (build-time only). However, the bundled output can target much lower Node.js versions via the [`target`](references\u002Foption-target.md) option, so libraries built with tsdown are **not locked to Node.js 22+ at runtime**.\n\nIf your package needs to support Node.js 18 \u002F 20:\n\n- **Build with Node.js 22+ in CI** (e.g. set `target: 'node18'` or `target: 'node20'`).\n- **Test the built output (or the packed tarball) on the lower Node.js versions** you intend to support — e.g. using a matrix job that runs the published package's tests on Node.js 18 \u002F 20 \u002F 22.\n\n## When to Use\n\n- Building TypeScript\u002FJavaScript libraries for npm\n- Generating TypeScript declaration files (.d.ts)\n- Bundling for multiple formats (ESM, CJS, IIFE, UMD)\n- Optimizing bundles with tree shaking and minification\n- Migrating from tsup with minimal changes\n- Building React, Vue, Solid, or Svelte component libraries\n\n## Quick Start\n\n```bash\n# Install\npnpm add -D tsdown\n\n# Basic usage\nnpx tsdown\n\n# With config file\nnpx tsdown --config tsdown.config.ts\n\n# Watch mode\nnpx tsdown --watch\n\n# Migrate from tsup\nnpx tsdown-migrate\n```\n\n## Basic Configuration\n\n```ts\nimport { defineConfig } from 'tsdown'\n\nexport default defineConfig({\n  entry: ['.\u002Fsrc\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  clean: true,\n})\n```\n\n## Core References\n\n| Topic | Description | Reference |\n|-------|-------------|-----------|\n| Getting Started | Installation, first bundle, CLI basics | [guide-getting-started](references\u002Fguide-getting-started.md) |\n| Configuration File | Config file formats, multiple configs, workspace | [option-config-file](references\u002Foption-config-file.md) |\n| CLI Reference | All CLI commands and options | [reference-cli](references\u002Freference-cli.md) |\n| Migrate from tsup | Migration guide and compatibility notes | [guide-migrate-from-tsup](references\u002Fguide-migrate-from-tsup.md) |\n| Plugins | Rolldown, Rollup, Unplugin support | [advanced-plugins](references\u002Fadvanced-plugins.md) |\n\n> For comprehensive migration assistance with complete option mappings, install the dedicated [`tsdown-migrate`](..\u002Ftsdown-migrate\u002FSKILL.md) skill: `npx skills add rolldown\u002Ftsdown --skill tsdown-migrate`\n| Hooks | Lifecycle hooks for custom logic | [advanced-hooks](references\u002Fadvanced-hooks.md) |\n| Programmatic API | Build from Node.js scripts | [advanced-programmatic](references\u002Fadvanced-programmatic.md) |\n| Rolldown Options | Pass options directly to Rolldown | [advanced-rolldown-options](references\u002Fadvanced-rolldown-options.md) |\n| CI Environment | CI detection, `'ci-only'` \u002F `'local-only'` values | [advanced-ci](references\u002Fadvanced-ci.md) |\n\n## Build Options\n\n| Option | Usage | Reference |\n|--------|-------|-----------|\n| Entry points | `entry: ['src\u002F*.ts', '!**\u002F*.test.ts']` | [option-entry](references\u002Foption-entry.md) |\n| Output formats | `format: ['esm', 'cjs', 'iife', 'umd']` | [option-output-format](references\u002Foption-output-format.md) |\n| Output directory | `outDir: 'dist'`, `outExtensions` | [option-output-directory](references\u002Foption-output-directory.md) |\n| Type declarations | `dts: true`, `dts: { sourcemap, compilerOptions, vue }` | [option-dts](references\u002Foption-dts.md) |\n| Target environment | `target: 'es2020'`, `target: 'esnext'` | [option-target](references\u002Foption-target.md) |\n| Platform | `platform: 'node'`, `platform: 'browser'` | [option-platform](references\u002Foption-platform.md) |\n| Tree shaking | `treeshake: true`, custom options | [option-tree-shaking](references\u002Foption-tree-shaking.md) |\n| Minification | `minify: true`, `minify: 'dce-only'` | [option-minification](references\u002Foption-minification.md) |\n| Source maps | `sourcemap: true`, `'inline'`, `'hidden'` | [option-sourcemap](references\u002Foption-sourcemap.md) |\n| Watch mode | `watch: true`, watch options | [option-watch-mode](references\u002Foption-watch-mode.md) |\n| Cleaning | `clean: true`, clean patterns | [option-cleaning](references\u002Foption-cleaning.md) |\n| Log level | `logLevel: 'silent'`, `failOnWarn: false` | [option-log-level](references\u002Foption-log-level.md) |\n\n## Dependency Handling\n\n| Feature | Usage | Reference |\n|---------|-------|-----------|\n| Never bundle | `deps: { neverBundle: ['react', \u002F^@myorg\\\u002F\u002F] }` | [option-dependencies](references\u002Foption-dependencies.md) |\n| Always bundle | `deps: { alwaysBundle: ['dep-to-bundle'] }` | [option-dependencies](references\u002Foption-dependencies.md) |\n| Only bundle | `deps: { onlyBundle: ['cac', 'bumpp'] }` - Whitelist | [option-dependencies](references\u002Foption-dependencies.md) |\n| Skip node_modules | `deps: { skipNodeModulesBundle: true }` | [option-dependencies](references\u002Foption-dependencies.md) |\n| Auto external | Automatic dependency\u002Fpeer\u002Foptional externalization | [option-dependencies](references\u002Foption-dependencies.md) |\n\n## Output Enhancement\n\n| Feature | Usage | Reference |\n|---------|-------|-----------|\n| Shims | `shims: true` - Add ESM\u002FCJS compatibility | [option-shims](references\u002Foption-shims.md) |\n| CJS default | `cjsDefault: true` (default) \u002F `false` | [option-cjs-default](references\u002Foption-cjs-default.md) |\n| Package exports | `exports: true` - Generate exports field | [option-package-exports](references\u002Foption-package-exports.md) |\n| CSS handling | **[experimental]** `css: { ... }` — full pipeline with preprocessors, Lightning CSS, PostCSS, CSS modules, code splitting; requires `@tsdown\u002Fcss` | [option-css](references\u002Foption-css.md) |\n| CSS modules | `css: { modules: { localsConvention: 'camelCase' } }` — scoped class names for `.module.css` files | [option-css](references\u002Foption-css.md) |\n| CSS inject | `css: { inject: true }` — preserve CSS imports in JS output | [option-css](references\u002Foption-css.md) |\n| Unbundle mode | `unbundle: true` - Preserve directory structure | [option-unbundle](references\u002Foption-unbundle.md) |\n| Root directory | `root: 'src'` - Control output directory mapping | [option-root](references\u002Foption-root.md) |\n| Executable | **[experimental]** `exe: true` - Bundle as standalone executable, cross-platform via `@tsdown\u002Fexe` | [option-exe](references\u002Foption-exe.md) |\n| Package validation | `publint: true`, `attw: true` - Validate package | [option-lint](references\u002Foption-lint.md) |\n\n## Framework & Runtime Support\n\n| Framework | Guide | Reference |\n|-----------|-------|-----------|\n| React | JSX transform, React Compiler | [recipe-react](references\u002Frecipe-react.md) |\n| Vue | SFC support, JSX | [recipe-vue](references\u002Frecipe-vue.md) |\n| Solid | SolidJS JSX transform | [recipe-solid](references\u002Frecipe-solid.md) |\n| Svelte | Svelte component libraries (source distribution recommended) | [recipe-svelte](references\u002Frecipe-svelte.md) |\n| WASM | WebAssembly modules via `rolldown-plugin-wasm` | [recipe-wasm](references\u002Frecipe-wasm.md) |\n\n## Common Patterns\n\n### Basic Library Bundle\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  clean: true,\n})\n```\n\n### Multiple Entry Points\n\n```ts\nexport default defineConfig({\n  entry: {\n    index: 'src\u002Findex.ts',\n    utils: 'src\u002Futils.ts',\n    cli: 'src\u002Fcli.ts',\n  },\n  format: ['esm', 'cjs'],\n  dts: true,\n})\n```\n\n### Browser Library (IIFE\u002FUMD)\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['iife'],\n  globalName: 'MyLib',\n  platform: 'browser',\n  minify: true,\n})\n```\n\n### React Component Library\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.tsx'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  deps: {\n    neverBundle: ['react', 'react-dom'],\n  },\n  inputOptions: {\n    jsx: { runtime: 'automatic' },\n  },\n})\n```\n\n### Preserve Directory Structure\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002F**\u002F*.ts', '!**\u002F*.test.ts'],\n  unbundle: true, \u002F\u002F Preserve file structure\n  format: ['esm'],\n  dts: true,\n})\n```\n\n### CI-Aware Configuration\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  failOnWarn: 'ci-only',  \u002F\u002F opt-in: fail on warnings in CI\n  publint: 'ci-only',\n  attw: 'ci-only',\n})\n```\n\n### WASM Support\n\n```ts\nimport { wasm } from 'rolldown-plugin-wasm'\nimport { defineConfig } from 'tsdown'\n\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  plugins: [wasm()],\n})\n```\n\n### Library with CSS and Sass\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  target: 'chrome100',\n  css: {\n    preprocessorOptions: {\n      scss: {\n        additionalData: `@use \"src\u002Fstyles\u002Fvariables\" as *;`,\n      },\n    },\n  },\n})\n```\n\n### Standalone Executable\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Fcli.ts'],\n  exe: true,\n})\n```\n\n### Cross-Platform Executable (requires `@tsdown\u002Fexe`)\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Fcli.ts'],\n  exe: {\n    targets: [\n      { platform: 'linux', arch: 'x64', nodeVersion: '25.7.0' },\n      { platform: 'darwin', arch: 'arm64', nodeVersion: '25.7.0' },\n      { platform: 'win', arch: 'x64', nodeVersion: '25.7.0' },\n    ],\n  },\n})\n```\n\n### Advanced with Hooks\n\n```ts\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n  hooks: {\n    'build:before': async (context) => {\n      console.log('Building...')\n    },\n    'build:done': async (context) => {\n      console.log('Build complete!')\n    },\n  },\n})\n```\n\n## Configuration Features\n\n### Multiple Configs\n\nExport an array for multiple build configurations:\n\n```ts\nexport default defineConfig([\n  {\n    entry: ['src\u002Findex.ts'],\n    format: ['esm', 'cjs'],\n    dts: true,\n  },\n  {\n    entry: ['src\u002Fcli.ts'],\n    format: ['esm'],\n    platform: 'node',\n  },\n])\n```\n\n### Conditional Config\n\nUse functions for dynamic configuration:\n\n```ts\nexport default defineConfig((options) => {\n  const isDev = options.watch\n  return {\n    entry: ['src\u002Findex.ts'],\n    format: ['esm', 'cjs'],\n    minify: !isDev,\n    sourcemap: isDev,\n  }\n})\n```\n\n### Workspace\u002FMonorepo\n\nUse glob patterns to build multiple packages:\n\n```ts\nexport default defineConfig({\n  workspace: 'packages\u002F*',\n  entry: ['src\u002Findex.ts'],\n  format: ['esm', 'cjs'],\n  dts: true,\n})\n```\n\n## CLI Quick Reference\n\n```bash\n# Basic commands\ntsdown                          # Build once\ntsdown --watch                  # Watch mode\ntsdown --config custom.ts       # Custom config\nnpx tsdown-migrate              # Migrate from tsup\n\n# Output options\ntsdown --format esm,cjs        # Multiple formats\ntsdown -d lib                  # Custom output directory (--out-dir)\ntsdown --minify                # Enable minification\ntsdown --dts                   # Generate declarations\ntsdown --exe                   # Bundle as standalone executable\ntsdown --unbundle              # Bundleless mode\n\n# Entry options\ntsdown src\u002Findex.ts            # Single entry\ntsdown src\u002F*.ts                # Glob patterns\ntsdown src\u002Fa.ts src\u002Fb.ts       # Multiple entries\n\n# Workspace \u002F Monorepo\ntsdown -W                      # Enable workspace mode\ntsdown -W -F my-package        # Filter specific package\ntsdown --filter \u002F^pkg-\u002F        # Filter by regex\n\n# Development\ntsdown --watch                 # Watch mode\ntsdown --sourcemap             # Generate source maps\ntsdown --clean                 # Clean output directory\ntsdown --from-vite             # Reuse Vite config\ntsdown --tsconfig tsconfig.build.json  # Custom tsconfig\n```\n\n## Best Practices\n\n1. **Always generate type declarations** for TypeScript libraries:\n   ```ts\n   { dts: true }\n   ```\n\n2. **Externalize dependencies** to avoid bundling unnecessary code:\n   ```ts\n   { deps: { neverBundle: [\u002F^react\u002F, \u002F^@myorg\\\u002F\u002F] } }\n   ```\n\n3. **Use tree shaking** for optimal bundle size:\n   ```ts\n   { treeshake: true }\n   ```\n\n4. **Enable minification** for production builds:\n   ```ts\n   { minify: true }\n   ```\n\n5. **Add shims** for better ESM\u002FCJS compatibility:\n   ```ts\n   { shims: true }  \u002F\u002F Adds __dirname, __filename, etc.\n   ```\n\n6. **Auto-generate package.json exports**:\n   ```ts\n   { exports: true }  \u002F\u002F Creates proper exports field\n   ```\n\n7. **Use watch mode** during development:\n   ```bash\n   tsdown --watch\n   ```\n\n8. **Preserve structure** for utilities with many files:\n   ```ts\n   { unbundle: true }  \u002F\u002F Keep directory structure\n   ```\n\n9. **Validate packages** in CI before publishing:\n   ```ts\n   { publint: 'ci-only', attw: 'ci-only' }\n   ```\n\n## Resources\n\n- Documentation: https:\u002F\u002Ftsdown.dev\n- GitHub: https:\u002F\u002Fgithub.com\u002Frolldown\u002Ftsdown\n- Rolldown: https:\u002F\u002Frolldown.rs\n- Migration Guide: https:\u002F\u002Ftsdown.dev\u002Fguide\u002Fmigrate-from-tsup\n",{"name":5,"description":7},"claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Ftsdown","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik","https:\u002F\u002Fnorvik-orpin.vercel.app","https:\u002F\u002Fgithub.com\u002Fpattanation","2026-07-17 11:17:04",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add pattanation\u002FNorvik --skill tsdown",{"tool":58,"command":59},"bunx","bunx skills add pattanation\u002FNorvik --skill tsdown",{"tool":61,"command":62},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill tsdown","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002FSKILL.md",true,[66,71,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":16},"LICENSE.md","LICENSE","许可证",1159,{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"README.md","REFERENCE","参考文档",2238,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002FREADME.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fadvanced-benchmark.md",265,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fadvanced-benchmark.md",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fadvanced-ci.md",2034,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fadvanced-ci.md",{"path":86,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fadvanced-hooks.md",7051,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fadvanced-hooks.md",{"path":90,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fadvanced-plugins.md",6754,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fadvanced-plugins.md",{"path":94,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fadvanced-programmatic.md",6060,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fadvanced-programmatic.md",{"path":98,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fadvanced-rolldown-options.md",2368,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fadvanced-rolldown-options.md",{"path":102,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fguide-getting-started.md",3210,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fguide-getting-started.md",{"path":106,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fguide-introduction.md",1589,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fguide-introduction.md",{"path":110,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Fguide-migrate-from-tsup.md",4914,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Fguide-migrate-from-tsup.md",{"path":114,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Foption-cjs-default.md",1941,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-cjs-default.md",{"path":118,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":119,"sourceHtmlUrl":120},"references\u002Foption-cleaning.md",4871,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-cleaning.md",{"path":122,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":123,"sourceHtmlUrl":124},"references\u002Foption-config-file.md",5592,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-config-file.md",{"path":126,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":127,"sourceHtmlUrl":128},"references\u002Foption-css.md",7087,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-css.md",{"path":130,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":131,"sourceHtmlUrl":132},"references\u002Foption-dependencies.md",7599,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-dependencies.md",{"path":134,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":135,"sourceHtmlUrl":136},"references\u002Foption-dts.md",4628,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-dts.md",{"path":138,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":139,"sourceHtmlUrl":140},"references\u002Foption-entry.md",3676,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-entry.md",{"path":142,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":143,"sourceHtmlUrl":144},"references\u002Foption-exe.md",3370,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-exe.md",{"path":146,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":147,"sourceHtmlUrl":148},"references\u002Foption-lint.md",2967,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-lint.md",{"path":150,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":151,"sourceHtmlUrl":152},"references\u002Foption-log-level.md",1819,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-log-level.md",{"path":154,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":155,"sourceHtmlUrl":156},"references\u002Foption-minification.md",3570,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-minification.md",{"path":158,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":159,"sourceHtmlUrl":160},"references\u002Foption-output-directory.md",4719,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-output-directory.md",{"path":162,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":163,"sourceHtmlUrl":164},"references\u002Foption-output-format.md",3645,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-output-format.md",{"path":166,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":167,"sourceHtmlUrl":168},"references\u002Foption-package-exports.md",5479,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-package-exports.md",{"path":170,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":171,"sourceHtmlUrl":172},"references\u002Foption-platform.md",5231,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-platform.md",{"path":174,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":175,"sourceHtmlUrl":176},"references\u002Foption-root.md",1888,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-root.md",{"path":178,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":179,"sourceHtmlUrl":180},"references\u002Foption-shims.md",5606,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-shims.md",{"path":182,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":183,"sourceHtmlUrl":184},"references\u002Foption-sourcemap.md",5542,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-sourcemap.md",{"path":186,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":187,"sourceHtmlUrl":188},"references\u002Foption-target.md",4078,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-target.md",{"path":190,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":191,"sourceHtmlUrl":192},"references\u002Foption-tree-shaking.md",5192,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-tree-shaking.md",{"path":194,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":195,"sourceHtmlUrl":196},"references\u002Foption-unbundle.md",5678,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-unbundle.md",{"path":198,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":199,"sourceHtmlUrl":200},"references\u002Foption-watch-mode.md",4660,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Foption-watch-mode.md",{"path":202,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":203,"sourceHtmlUrl":204},"references\u002FREADME.md",4797,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002FREADME.md",{"path":206,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":207,"sourceHtmlUrl":208},"references\u002Frecipe-react.md",6065,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Frecipe-react.md",{"path":210,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":211,"sourceHtmlUrl":212},"references\u002Frecipe-solid.md",783,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Frecipe-solid.md",{"path":214,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":215,"sourceHtmlUrl":216},"references\u002Frecipe-svelte.md",1411,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Frecipe-svelte.md",{"path":218,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":219,"sourceHtmlUrl":220},"references\u002Frecipe-vue.md",6562,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Frecipe-vue.md",{"path":222,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":223,"sourceHtmlUrl":224},"references\u002Frecipe-wasm.md",2535,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Frecipe-wasm.md",{"path":226,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":227,"sourceHtmlUrl":228},"references\u002Freference-cli.md",7500,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002Freferences\u002Freference-cli.md",{"path":230,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":231,"sourceHtmlUrl":232},"SYNC.md",140,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftsdown\u002FSYNC.md",[234,262,287,310,332,347],{"skillNo":235,"name":236,"nameZh":6,"description":237,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":238,"licenseFileUrl":239,"sourceHtmlUrl":240,"categories":241,"keywords":246,"publishedAt":40},"01M71QDV4DM8T19HEHWATEF1K4","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[242,245],{"categoryNo":243,"categoryName":244,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[247,248,249,31,250,251,252,253,254,255,256,36,257,258,259,260,261],"webapp","testing","webapp testing","applications","local","frontend","debugging","toolkit","logs","browser","playwright","web","behavior","ui","screenshots",{"skillNo":263,"name":264,"nameZh":6,"description":265,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":238,"licenseFileUrl":266,"sourceHtmlUrl":267,"categories":268,"keywords":270,"publishedAt":40},"01M71QDH2GGMXGA9105C9W1N7B","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[269],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[271,272,273,258,274,275,276,31,277,278,252,279,33,280,281,282,283,284,285,286],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","state","routing","state management",{"skillNo":288,"name":289,"nameZh":6,"description":290,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":291,"sourceHtmlUrl":292,"categories":293,"keywords":295,"publishedAt":40},"01M71QD9T2XC3EWMQNN9ACNWQ1","vueuse-functions","Apply VueUse composables where appropriate to build concise, maintainable Vue.js \u002F Nuxt features.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FSKILL.md",[294],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[296,297,298,299,300,301,302,303,304,305,306,307,308,309],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":311,"name":312,"nameZh":6,"description":313,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":314,"sourceHtmlUrl":315,"categories":316,"keywords":319,"publishedAt":40},"01M71QD51HWSGYMCMB7RW7PGK8","vue-testing-best-practices","Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FSKILL.md",[317,318],{"categoryNo":243,"categoryName":244,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[320,248,321,307,322,257,323,324,325,302,326,31,327,328,329,33,330,308,331],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":333,"name":334,"nameZh":6,"description":335,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":336,"sourceHtmlUrl":337,"categories":338,"keywords":340,"publishedAt":40},"01M71QD358H2DJ9THJRBP77T3T","vue-router-best-practices","Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FSKILL.md",[339],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[341,307,342,322,343,325,344,302,330,345,346],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":348,"name":349,"nameZh":6,"description":350,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":351,"sourceHtmlUrl":352,"categories":353,"keywords":355,"publishedAt":40},"01M71QCYPNWDE2MQZ1TF3ED5S4","vue-best-practices","MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",[354],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[356,307,322,357,299,358,359,360,341,361,362,363,364,29,365,31,366,33,367,368],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","as","vite","load","standard"]