TS

ts-library

Provides best practices and tooling configurations for building and publishing TypeScript libraries.

Install

mkdir -p .claude/skills/ts-library && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/1311" && unzip -o skill.zip -d .claude/skills/ts-library && rm skill.zip

Installs to .claude/skills/ts-library

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Use when authoring TypeScript libraries or npm packages - covers project setup, package.json exports, build tooling (tsdown/unbuild), API design patterns, type inference tricks, testing, and publishing to npm. Use when bundling, configuring dual CJS/ESM output, or setting up release workflows.
294 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Configure dual CJS/ESM package exports
  • Setup library-specific build tools (tsdown)
  • Design type-safe API patterns
  • Configure Vitest for library testing

How it works

Uses templates and patterns derived from high-quality ecosystem tools (unbuild/tsdown) for package architecture.

Inputs & outputs

You give it
Description of library requirements
You get back
Project configuration and boilerplate code

When to use ts-library

  • Configuring dual CJS/ESM package exports
  • Setting up build tooling like unbuild or tsdown
  • Designing type-safe API patterns for packages

About this skill

TypeScript Library Development

Patterns for authoring high-quality TypeScript libraries, extracted from studying unocss, shiki, unplugin, vite, vitest, vueuse, zod, trpc, drizzle-orm, and more.

When to Use

  • Starting a new TypeScript library (single or monorepo)
  • Setting up package.json exports for dual CJS/ESM
  • Configuring tsconfig for library development
  • Choosing build tools (tsdown, unbuild)
  • Designing type-safe APIs (builder, factory, plugin patterns)
  • Writing advanced TypeScript types
  • Setting up vitest for library testing
  • Configuring release workflow and CI

For Nuxt module development: use nuxt-modules skill

Quick Reference

Working on...Load file
New project setupreferences/project-setup.md
Package exportsreferences/package-exports.md
tsconfig optionsreferences/typescript-config.md
Build configurationreferences/build-tooling.md
ESLint configreferences/eslint-config.md
API design patternsreferences/api-design.md
Type inference tricksreferences/type-patterns.md
Testing setupreferences/testing.md
Release workflowreferences/release.md
CI/CD setupreferences/ci-workflows.md

Loading Files

Consider loading these reference files based on your task:

DO NOT load all files at once. Load only what's relevant to your current task.

New Library Workflow

  1. Create project structure → load references/project-setup.md
  2. Configure package.json exports → load references/package-exports.md
  3. Set up build with tsdown → load references/build-tooling.md
  4. Verify build: pnpm build && pnpm pack --dry-run — check output includes .mjs, .cjs, .d.ts
  5. Add tests → load references/testing.md
  6. Configure release → load references/release.md

Quick Start

// package.json (minimal)
{
  "name": "my-lib",
  "type": "module",
  "exports": {
    ".": {
      "import": "./dist/index.mjs",
      "require": "./dist/index.cjs"
    }
  },
  "main": "./dist/index.cjs",
  "module": "./dist/index.mjs",
  "types": "./dist/index.d.ts",
  "files": ["dist"]
}
// tsdown.config.ts
import { defineConfig } from 'tsdown'

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['esm', 'cjs'],
  dts: true,
})

Key Principles

  • ESM-first: "type": "module" with .mjs outputs
  • Dual format: always support both CJS and ESM consumers
  • moduleResolution: "Bundler" for modern TypeScript
  • tsdown for most builds, unbuild for complex cases
  • Smart defaults: detect environment, don't force config
  • Tree-shakeable: lazy getters, proper sideEffects: false

Token efficiency: Main skill ~300 tokens, each reference ~800-1200 tokens

When not to use it

  • Creating standard application code
  • Projects not intended for npm distribution

Prerequisites

npmTypeScript

Limitations

  • Specific to library authoring, not app implementation
  • Requires knowledge of build-time bundling

How it compares

Focuses on library-specific concerns like build tooling and export patterns rather than standard React/Node application development.

Compared to similar skills

ts-library side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
ts-library (this skill)35moNo flagsIntermediate
vitest416moNo flagsIntermediate
zod-4127moNo flagsIntermediate
write-unit-tests53moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

motion

onmax

Use when adding animations with Motion Vue (motion-v) - provides motion component API, gesture animations, scroll-linked effects, layout transitions, and composables for Vue 3/Nuxt

1044

nuxthub-migration

onmax

Use when migrating NuxtHub projects or when user mentions NuxtHub Admin sunset, GitHub Actions deployment removal, self-hosting NuxtHub, or upgrading to v1/nightly. Covers v0.9.X self-hosting (stable) and v1/nightly multi-cloud (experimental, database/blob not ready).

589

vueuse

onmax

Use when working with VueUse composables - provides reactive utilities for state, browser APIs, sensors, network, animations. Check VueUse before writing custom composables - most patterns already implemented.

417

document-writer

onmax

Use when writing blog posts or documentation markdown files - provides writing style guide (active voice, present tense), content structure patterns, and MDC component usage. Overrides brevity rules for proper grammar. Use nuxt-content for MDC syntax, nuxt-ui for component props.

325

nuxt-content

onmax

Use when working with Nuxt Content v3 - provides collections (local/remote/API sources), queryCollection API, MDC rendering, database configuration, NuxtStudio integration, hooks, i18n patterns, and LLMs integration

327

nuxt-modules

onmax

Use when creating Nuxt modules: (1) Published npm modules (@nuxtjs/, nuxt-), (2) Local project modules (modules/ directory), (3) Runtime extensions (components, composables, plugins), (4) Server extensions (API routes, middleware), (5) Releasing/publishing modules to npm, (6) Setting up CI/CD workflows for modules. Provides defineNuxtModule patterns, Kit utilities, hooks, E2E testing, and release automation.

318

Search skills

Search the agent skills registry