smithery.ai

ddd-context-generator

Generate complete DDD bounded context with all 4 layers (Domain, Application, Infrastructure, Presentation).

First seen Mar 24, 2026

Installation

$ npx skills add https://smithery.ai

Summary

  • Generate complete DDD bounded context with all 4 layers (Domain, Application, Infrastructure, Presentation).
  • Use when user wants to create new business capability, scaffold complete context with CRUD, or build full feature from scratch (e.g., "Create Order context", "Generate Product context with inventory").

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsRead, Write, Edit, Glob, Grep
Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 8,074 B
  • docs SUMMARY.md 339 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

DDD Context Generator

Generate complete Domain-Driven Design bounded contexts with all 4 architectural layers (Domain, Application, Infrastructure, Presentation) for Bun.js + Express + routing-controllers backend applications.

What This Skill Does

This skill generates production-ready code for a complete bounded context following DDD and Clean Architecture principles. It creates:

  • Domain Layer: Entities, value objects, repository interfaces, domain events, and errors
  • Application Layer: Use cases with dependency injection and event listeners
  • Infrastructure Layer: Mongoose models, repository implementations, and mappers
  • Presentation Layer: Request DTOs, response serializers, controllers with decorator-based routing and Swagger documentation

When to Use This Skill

Use this skill when you need to:

  • Create a new business capability from scratch
  • Scaffold a complete context with CRUD operations
  • Add a new bounded context to your DDD backend
  • Generate a full feature with all architectural layers

Examples:

  • "Create an Order context with CRUD operations"
  • "Generate a Product context with inventory management"
  • "Build a Payment context with transaction handling"

How It Works

Step 1: Requirements Gathering

The skill will ask you to clarify:

  • Context name (e.g., "User", "Product", "Order")
  • Required operations (CRUD, custom use cases)
  • Business rules and invariants
  • Required value objects
  • Domain events needed

Step 2: Code Generation

The skill generates code in this order:

  1. Directory Structure - Shows complete file tree
  2. Domain Layer - Pure business logic with zero dependencies

- Value objects (immutable, validated) - Domain errors (with error codes) - Domain events (past tense naming) - Entities (factory methods, encapsulation) - Repository interfaces (domain contracts) - Barrel export (index.ts)

  1. Application Layer - Use cases and orchestration

- Use cases (@injectable, execute method) - Event listeners (handle domain events) - Barrel export (index.ts)

  1. Infrastructure Layer - Persistence implementation

- Mongoose models (with TypeScript interfaces) - Mappers (domain ↔ persistence conversion) - Repository implementations (@injectable)

  1. Presentation Layer - HTTP API

- Request DTOs (class-validator decorators) - Response serializers (@JSONSchema decorators) - Controllers (@injectable, decorator-based routing with @JsonController)

  1. Integration Code

- DI container registration - Event listener registration - Route registration

Step 3: Verification

The skill provides a checklist to verify:

  • All layers properly structured
  • Dependency rules followed
  • Proper decorators applied
  • Integration code provided

Architecture Requirements

This skill follows the patterns defined in the project's CLAUDE.md:

Tech Stack

  • Runtime: Bun.js
  • Framework: Express + routing-controllers
  • Database: MongoDB with Mongoose
  • Validation: class-validator
  • DI Container: tsyringe
  • Documentation: routing-controllers-openapi + Swagger UI

Dependency Rule

Presentation → Application → Domain
      ↓            ↓
  Infrastructure
  • Domain has ZERO external dependencies
  • Application depends only on Domain
  • Infrastructure implements Domain interfaces
  • Presentation depends on Application and Domain

Key Patterns

Entity Pattern:

export class EntityName {
  private constructor(...) {}

  static create(data): EntityName {
    // Validation and creation
  }

  static reconstitute(data): EntityName {
    // Load from database
  }

  // Getters and business methods
}

Value Object Pattern:

export class ValueObject {
  private readonly value: string;

  private constructor(value: string) {
    this.value = value;
  }

  static create(value: string): ValueObject {
    // Validation
    return new ValueObject(value);
  }

  equals(other: ValueObject): boolean {
    return this.value === other.value;
  }
}

UseCase Pattern:

@injectable()
export class ActionEntityUseCase {
  constructor(
    @inject('IEntityRepository')
    private readonly repo: IEntityRepository
  ) {}

  async execute(input: Input): Promise<Output> {
    // Business logic
    await eventBus.emit('EventName', event);
    return output;
  }
}

API Pattern:

// Versioned routes with Swagger
new Elysia({ prefix: '/v1/entities' })
  .post('/', controller.create.bind(controller), {
    body: CreateSchema,
    detail: {
      summary: 'Create entity',
      tags: ['Entities'],
      responses: { 201: {}, 400: {}, 409: {} }
    }
  })

Generated Structure

/src/contexts/{ContextName}/
├── domain/
│   ├── entities/
│   │   └── {entity}.entity.ts
│   ├── value-objects/
│   │   └── {vo}.vo.ts
│   ├── repositories/
│   │   └── {entity}.repository.interface.ts
│   ├── events/
│   │   └── {event}.event.ts
│   ├── errors/
│   │   └── {context}.errors.ts
│   └── index.ts
├── application/
│   ├── usecases/
│   │   ├── create-{entity}.usecase.ts
│   │   ├── find-{entity}.usecase.ts
│   │   ├── update-{entity}.usecase.ts
│   │   └── delete-{entity}.usecase.ts
│   ├── listeners/
│   │   └── {event}.listener.ts
│   └── index.ts
├── infrastructure/
│   ├── models/
│   │   └── {entity}.model.ts
│   ├── repositories/
│   │   └── {entity}.repository.ts
│   └── mappers/
│       └── {entity}.mapper.ts
└── presentation/
    ├── schemas/
    │   ├── create-{entity}.schema.ts
    │   ├── update-{entity}.schema.ts
    │   ├── query-{entity}.schema.ts
    │   └── {entity}-response.schema.ts
    ├── {context}.controller.ts
    └── {context}.routes.ts

Code Quality Standards

All generated code follows:

  • Type Safety: No any types, use unknown if needed
  • Naming: PascalCase classes, camelCase methods, UPPERSNAKECASE constants
  • Exports: Named exports only (no default exports)
  • Decorators: @injectable() on all DI classes
  • Error Handling: Domain errors in domain, HTTP exceptions in presentation
  • Documentation: Minimal code comments, comprehensive Swagger docs

Integration Instructions

After generation, you need to:

  1. Register repository in DI container (/src/global/container/container.ts):
container.registerSingleton<IEntityRepository>(
  'IEntityRepository',
  EntityRepository
);
  1. Register routes (/src/main.ts):
import { registerEntityRoutes } from '@/contexts/entity/presentation/entity.routes';
app.use(registerEntityRoutes());
  1. Register event listeners (/src/main.ts):
import { EntityCreatedListener } from '@/contexts/entity/application';
const listener = container.resolve(EntityCreatedListener);
eventBus.on('EntityCreated', listener.handle.bind(listener));

Before Using This Skill

Ensure you have:

  1. Read the main CLAUDE.md architecture guide
  2. Understanding of DDD and Clean Architecture principles
  3. Familiarity with the tech stack (Bun.js, Elysia.js, MongoDB)

Related Skills

  • ddd-entity-generator: Generate individual domain entities
  • ddd-usecase-generator: Generate application layer use cases
  • ddd-api-generator: Generate presentation layer APIs
  • ddd-validator: Validate DDD compliance after generation