Claude Code Plugins

Community-maintained marketplace

Feedback

creating-modules

@jasonkuhrt/kit
4
0

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 Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name creating-modules
description Creates new modules within existing packages following project conventions. Handles file structure, barrel exports, namespace files, package.json imports/exports, and internal import patterns.

Creating Modules

Steps

  1. Create module directory: packages/<pkg>/src/<module-name>/

  2. Create implementation files: <module-name>.ts or split across multiple files

  3. Create barrel file __.ts:

    export * from './implementation.js'
    export type * from './types.js'
    
  4. Create namespace file _.ts:

    export * as ModuleName from './__.js'
    
  5. Add to package.json imports:

    {
      "imports": {
        "#module-name": "./build/module-name/_.js",
        "#module-name/*": "./build/module-name/*.js"
      }
    }
    
  6. Add to package.json exports:

    {
      "exports": {
        "./module-name": "./build/module-name/__.js"
      }
    }
    
  7. Sync tsconfig paths (run syncing-tsconfig-paths skill script)

  8. Add to main exports in src/index.ts:

    export * 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 (by, not groupBy)

Notes

  • Each package defines its own # imports in package.json
  • Cross-package # imports are not valid - use package name imports