← Back to list

creating-libraries
by jasonkuhrt
Tool configurations
⭐ 1🍴 0📅 Jan 22, 2026
SKILL.md
name: creating-libraries description: This skill should be used when the user asks to "create a library", "scaffold a new lib", "add a local library", "create a namespace module", "set up _.ts and .ts", or needs to create a new TypeScript library following the _.ts/.ts namespace pattern. Handles both simple (single file) and complex (barrel) library structures.
Creating Libraries
Scaffold new TypeScript libraries following the namespace module conventions.
CRITICAL
Read the Conventions First
Before creating any library, read the appropriate convention documents:
- Core pattern:
~/.claude/docs/conventions/namespace-module.md— The abstract_.ts/__.tspattern - Local libraries (
/src/lib/*):~/.claude/docs/conventions/library-local.md - Package libraries (package IS the library):
~/.claude/docs/conventions/library-package.md
File Naming
_.ts— Namespace module (REQUIRED)__.ts— Barrel module (only if multiple implementation files)_.test.ts— Public API tests_.test.fixture.ts— Shared test fixtures (exportsnamespace Fx)
Operations
Create Simple Library (Single Implementation)
Use when library has one implementation file.
Structure:
src/lib/<name>/
├── _.ts # export * as Name from './<name>.js'
├── <name>.ts # Implementation
└── _.test.ts # Tests
Steps:
- Create directory at
src/lib/<name>/(kebab-case) - Create
<name>.tswith implementation - Create
_.tswith:export * as <PascalName> from './<name>.js' - Create
_.test.tsimporting from./_.js - Add to
package.jsonimports:"#<name>": "./build/lib/<name>/_.js" - Add to
tsconfig.jsonpaths:"#<name>": ["src/lib/<name>/_.ts"]
Create Complex Library (Multiple Files)
Use when library has multiple implementation files.
Structure:
src/lib/<name>/
├── _.ts # export * as Name from './__.js'
├── __.ts # Barrel: exports from all implementation files
├── foo.ts # Implementation
├── bar.ts # Implementation
└── _.test.ts # Tests
Steps:
- Create directory at
src/lib/<name>/(kebab-case) - Create implementation files
- Create
__.tswith re-exports from all implementation files - Create
_.tswith:export * as <PascalName> from './__.js' - Create
_.test.tsimporting from./_.js - Add package.json imports and tsconfig.json paths
Examples
Simple Library Example
// src/lib/mask/mask.ts
export const create = (pattern: string): Mask => ({ pattern })
export const apply = (mask: Mask, value: string): string => value
export interface Mask {
pattern: string
}
// src/lib/mask/_.ts
export * as Mask from './mask.js'
// src/lib/mask/_.test.ts
import { Mask } from './_.js'
test('.create', () => {/* ... */})
Complex Library Example
// src/lib/parser/tokenizer.ts
export const tokenize = (input: string): Token[] => []
// src/lib/parser/lexer.ts
export const lex = (tokens: Token[]): Lexeme[] => []
// src/lib/parser/__.ts
export { lex, type Lexeme } from './lexer.js'
export { type Token, tokenize } from './tokenizer.js'
// src/lib/parser/_.ts
export * as Parser from './__.js'
Reference
Naming Conventions
| Element | Case | Example |
|---|---|---|
| Directory | kebab-case | my-lib/ |
| Files | kebab-case | my-lib.ts |
| Namespace | PascalCase | MyLib |
Package.json Imports Entry
{
"imports": {
"#<name>": "./build/lib/<name>/_.js"
}
}
TSConfig Paths Entry
{
"compilerOptions": {
"paths": {
"#<name>": ["src/lib/<name>/_.ts"]
}
}
}
Notes
- Always use
.jsextension in imports (ESM requirement) - Namespace name = PascalCase of directory name
- Tests import ONLY from
_.ts, never from implementation files - Code modules can import siblings via relative paths
- Cross-library imports use
#<name>subpath imports
Score
Total Score
55/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon



