mcpField
T
ts-library

ts-library

github.com/onmaxDevelopment7232.0k installsUpdated today
Repository

About ts-library

A development skill for TypeScript library authors, covering project setup, builds, API design, testing, and releases through task-specific references.

Key features

  1. 01Library project setup
  2. 02CJS and ESM package exports
  3. 03Type-safe API design
  4. 04Build and test configuration
  5. 05Release and CI workflows

Use cases

  1. 01Starting a single or monorepo library
  2. 02Configuring package.json exports
  3. 03Designing inferred types or plugin APIs
  4. 04Setting up tests, releases, or CI

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/onmax/nuxt-skills --skill ts-library

After installing, type/ts-libraryin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

patterns/
api.md
types.md
references/
api-design.md
build-tooling.md
ci-workflows.md
eslint-config.md
package-exports.md
project-setup.md
release.md
testing.md
type-patterns.md
typescript-config.md
setup/
exports.md
project.md
tsconfig.md
workflows/
ci.md
release.md
testing.md

Details

From the project README

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

Comments

Markdown supported