界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

add-export

add-export

【开发与工程】Add a new subpath export to the @cyanheads/mcp-ts-core package. Use when creating a new public API surface that consumers import from a dedicated subpath (e.g., @cyanheads/mcp-ts-core/newutil).

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

Ccyanheads / mcp-ts-coreApache-2.0

技能说明

GitHub

name: add-export description: > Add a new subpath export to the @cyanheads/mcp-ts-core package. Use when creating a new public API surface that consumers import from a dedicated subpath (e.g., @cyanheads/mcp-ts-core/newutil). metadata: author: cyanheads version: "1.2" audience: internal type: reference

Context

Subpath exports are defined in package.json under the exports field. Each subpath maps to a source entry point that gets compiled to dist/. The exports catalog in CLAUDE.md/AGENTS.md must stay in sync with package.json.

The build uses tsconfig.build.json (not tsconfig.json) with rootDir: ./src and include: ["src/**/*"]. This means every source file at src/foo/bar.ts compiles to dist/foo/bar.js — the dist/ path in each export entry must match wherever tsc produces the compiled output for the named source file. Choose your source file location to produce the dist/ path you want in the export entry.

Steps

  1. Create the entry point source file under src/ (e.g., src/utils/new-util.ts)

  2. Add the subpath to package.json exports, mirroring the source path:

    // source: src/utils/new-util.ts → dist: dist/utils/new-util.js
    "./newutil": {
      "types": "./dist/utils/new-util.d.ts",
      "import": "./dist/utils/new-util.js"
    }
    
  3. Update the exports catalog in both CLAUDE.md and AGENTS.md — add a row to the table. These files must stay byte-identical; the simplest approach is cp CLAUDE.md AGENTS.md after editing

  4. Regenerate the public API manifest — bun run scripts/public-api-contract-update.ts rewrites PUBLIC_RUNTIME_EXPORTS in scripts/public-api-contract.ts from the live barrels; never edit it by hand

  5. Verify with bun run devcheck and bun run test:package — the package lane builds, packs, installs, and imports every subpath in the manifest, so a wrong dist/ path or a missing export fails there

Naming conventions

ConventionRule
Subpathall-lowercase, no underscores (e.g., utils, storage/types, testing/fuzz)
Source filekebab-case (e.g., error-handler.ts)
Export namecamelCase for values, PascalCase for types

Checklist

  • Source entry point file created with JSDoc header
  • Subpath added to package.json exports with types and import conditions
  • Exports catalog updated in both CLAUDE.md and AGENTS.md (must be byte-identical)
  • If the new export has optional peer dependencies: entries added to both peerDependencies and peerDependenciesMeta in package.json
  • Public API manifest regenerated with bun run scripts/public-api-contract-update.ts
  • bun run devcheck passes
  • bun run test:package passes
我的收藏