Claude-skill-registry creating-modules
Creates new modules within existing packages following project conventions. Handles file structure, barrel exports, namespace files, package.json imports/exports, and internal import patterns.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/creating-modules" ~/.claude/skills/majiayu000-claude-skill-registry-creating-modules && rm -rf "$T"
manifest:
skills/data/creating-modules/SKILL.mdsource content
Creating Modules
Steps
-
Create module directory:
packages/<pkg>/src/<module-name>/ -
Create implementation files:
or split across multiple files<module-name>.ts -
Create barrel file
:__.tsexport * from './implementation.js' export type * from './types.js' -
Create namespace file
:_.tsexport * as ModuleName from './__.js' -
Add to package.json imports:
{ "imports": { "#module-name": "./build/module-name/_.js", "#module-name/*": "./build/module-name/*.js" } } -
Add to package.json exports:
{ "exports": { "./module-name": "./build/module-name/__.js" } } -
Sync tsconfig paths (run
skill script)syncing-tsconfig-paths -
Add to main exports in
:src/index.tsexport * from '#module-name'
Reference
Module Structure
src/module-name/ ├── _.ts # Namespace file - exports the namespace ├── _.test.ts # Module tests ├── __.ts # Barrel file - exports all functions/types └── *.ts # Implementation files
Import System
Use
# imports for internal module references within a package:
// Correct - use # imports import { Fn } from '#fn' import { Obj } from '#obj' // Incorrect - don't use relative or package imports internally import { Fn } from '../fn/_.js' import { Obj } from '@kitz/core/obj'
Naming
- Directory: kebab-case (
)group-by/ - Namespace export: PascalCase (
)GroupBy - Functions: camelCase, no namespace prefix (
, notby
)groupBy
Notes
- Each package defines its own
imports in package.json# - Cross-package
imports are not valid - use package name imports#