ts-library

Complete reference guide for authoring TypeScript libraries and npm packages. Covers project setup, package.json exports configuration, tsconfig optimization, and dual CJS/ESM build tooling with tsdown or unbuild Includes API design patterns (builder, factory, plugin systems), advanced type inference techniques, and tree-shaking best practices Provides vitest testing setup, release workflow configuration, and GitHub Actions CI/CD templates Organized as modular reference files—load only what's relevant to your current task to minimize token usage

INSTALLATION
npx skills add https://github.com/onmax/nuxt-skills --skill ts-library
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

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 setup

references/project-setup.md

Package exports

references/package-exports.md

tsconfig options

references/typescript-config.md

Build configuration

references/build-tooling.md

ESLint config

references/eslint-config.md

API design patterns

references/api-design.md

Type inference tricks

references/type-patterns.md

Testing setup

references/testing.md

Release workflow

references/release.md

CI/CD setup

references/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

  • Verify build: pnpm build && pnpm pack --dry-run — check output includes .mjs, .cjs, .d.ts

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

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card