Agent-skills-standard nestjs-transport

Configure gRPC, RabbitMQ, and monorepo contract patterns for NestJS microservices. Use when setting up gRPC service-to-service calls, RabbitMQ event-driven messaging, shared contract libraries, or microservice exception handling in NestJS. (triggers: main.ts, **/*.controller.ts, Transport.GRPC, Transport.RMQ, MicroserviceOptions)

install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/nestjs/nestjs-transport" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-nestjs-transport && rm -rf "$T"
manifest: skills/nestjs/nestjs-transport/SKILL.md
source content

Microservices & Transport Standards

Priority: P0 (FOUNDATIONAL)

  • Synchronous (RPC): Use gRPC for low-latency, internal service-to-service calls (10x faster than REST/JSON).
  • Asynchronous (Events): Use RabbitMQ or Kafka for decoupling domains via fire-and-forget (
    emit()
    ).

gRPC Setup

See implementation examples

RabbitMQ Setup

See implementation examples

Monorepo Contracts

  • Store all DTOs,
    .proto
    files, and Interfaces in
    libs/contracts
    .
  • Services never import from sibling services — only from
    contracts
    .
  • Semantic versioning of messages mandatory. Never change field type; add new field.

Exception Handling

Standard

HttpException
lost over RPC/TCP. Use
RpcException
with global filters:

See implementation examples

Serialization

  • Apply
    useGlobalPipes(new ValidationPipe({ transform: true }))
    in
    MicroserviceOptions
    setup, not HTTP.

Anti-Patterns

  • No cross-service imports: Services must import only from
    libs/contracts
    , never from sibling services.
  • No HttpException in RPC: Use
    RpcException
    with global
    RpcExceptionFilter
    for microservice errors.
  • No unversioned message schema: Add new fields; never change existing field types — consumers will break.