mcpbeat Sign in

Backend Agent Skill

>- module structure, services, controllers, DTOs, dependency injection, and error handling. Use when editing any file under redisinsight/api/**, writing or modifying NestJS modules, controllers, services, DTOs, providers, or when the user mentions the backend, API, or NestJS.

2k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
8685
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/redis/RedisInsight --skill backend

The instruction itself

28 sections, as written by the author

Backend Development (NestJS/API)

Module Structure

NestJS Architecture

  • Follow modular architecture (feature-based modules)
  • Use dependency injection throughout
  • Separate concerns: Controllers, Services, Repositories
  • Use DTOs for validation and data transfer
  • Apply proper error handling with NestJS exceptions

Module Folder Structure

Each feature module in its own directory under api/src/:

feature/
├── feature.module.ts           # Module definition
├── feature.controller.ts       # REST endpoints
├── feature.service.ts          # Business logic
├── feature.service.spec.ts     # Service tests
├── feature.controller.spec.ts  # Controller tests
├── feature.types.ts            # Interfaces and types related to the feature
├── dto/                        # Data transfer objects
│   ├── create-feature.dto.ts
│   ├── update-feature.dto.ts
│   └── feature.dto.ts
├── entities/                   # TypeORM entities
├── repositories/               # Custom repositories
├── exceptions/                 # Custom exceptions
├── guards/                     # Feature-specific guards
├── decorators/                 # Custom decorators
└── constants/                  # Feature constants

File Naming

  • Modules: feature.module.ts
  • Controllers: feature.controller.ts
  • Services: feature.service.ts
  • DTOs: create-feature.dto.ts, update-feature.dto.ts
  • Entities: feature.entity.ts
  • Interfaces and types: feature.types.ts
  • Tests: feature.service.spec.ts
  • Constants: feature.constants.ts
  • Exceptions: feature-not-found.exception.ts

Constants Organization

Store feature-specific constants in dedicated constants file:

export const FEATURE_CONSTANTS = {
  MAX_NAME_LENGTH: 100,
  DEFAULT_PAGE_SIZE: 20,
} as const;

export const FEATURE_ERROR_MESSAGES = {
  NOT_FOUND: 'Feature not found',
  INVALID_INPUT: 'Invalid feature data',
} as const;

Imports Order

  • Node.js built-in modules
  • External dependencies (@nestjs/*, etc.)
  • Internal modules (using src/* alias — the backend's self-reference into redisinsight/api/src/*)
  • Local relative imports

Service Layer

Service Pattern

  • Inject dependencies via constructor
  • Use TypeORM repositories
  • Handle errors with NestJS exceptions
  • Use Logger for important operations
  • Keep business logic in services (not controllers)

Dependency Injection

Always inject dependencies via constructor with proper decorators:

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private readonly userRepository: Repository<User>,
    private readonly emailService: EmailService,
  ) {}
}

Controller Layer

Controller Pattern

  • Keep controllers thin (delegate to services)
  • Use proper HTTP decorators (@Get, @Post, etc.)
  • Use @Body, @Param, @Query for inputs
  • Apply guards with @UseGuards()
  • Document with Swagger decorators

HTTP Status Codes

  • Use @HttpCode() decorator for non-standard codes
  • Return appropriate status codes (200, 201, 204, 400, 404, etc.)

Data Transfer Objects (DTOs)

Validation

Use class-validator decorators for validation:

  • @IsString(), @IsNumber(), @IsEmail()
  • @IsNotEmpty(), @IsOptional()
  • @MinLength(), @MaxLength()
  • @Min(), @Max()

Swagger Documentation

Use @ApiProperty() and @ApiPropertyOptional() for Swagger docs.

Error Handling

NestJS Exceptions

Use appropriate exception types:

  • NotFoundException - 404
  • BadRequestException - 400
  • UnauthorizedException - 401
  • ForbiddenException - 403
  • ConflictException - 409
  • InternalServerErrorException - 500

Custom Exceptions

Prefer custom exceptions over generic ones when you need:

  • Consistent error codes for frontend handling
  • Specific error messages from constants
  • Consistent error structure across the codebase

Create custom exceptions following existing patterns:

// src/modules/feature/exceptions/feature-invalid.exception.ts
import {
  HttpException,
  HttpExceptionOptions,
  HttpStatus,
} from '@nestjs/common';
import ERROR_MESSAGES from 'src/constants/error-messages';
import { CustomErrorCodes } from 'src/constants';

export class FeatureInvalidException extends HttpException {
  constructor(
    message = ERROR_MESSAGES.FEATURE_INVALID,
    options?: HttpExceptionOptions,
  ) {
    const response = {
      message,
      statusCode: HttpStatus.BAD_REQUEST,
      error: 'FeatureInvalid',
      errorCode: CustomErrorCodes.FeatureInvalid,
    };

    super(response, response.statusCode, options);
  }
}

Error Logging

private readonly logger = new Logger(ServiceName.name)

this.logger.error('Error message', error.stack, { context })

Redis Integration

Redis Service Pattern

  • Use RedisClient from src/modules/redis
  • Handle errors gracefully
  • Log Redis operations
  • Use try-catch for error handling

Code Quality

Cognitive Complexity (≤ 15)

  • Use early returns to reduce nesting
  • Extract complex logic to separate functions
  • Avoid deeply nested conditions

No Duplicate Strings

Extract repeated strings to constants in constants file.

API Documentation (Swagger)

Required Decorators

  • @ApiTags() - Group endpoints
  • @ApiOperation() - Describe operation
  • @ApiResponse() - Document responses
  • @ApiParam() - Document params
  • @ApiQuery() - Document query params
  • @ApiBearerAuth() - Auth requirement

Checklist

  • [ ] Services use dependency injection
  • [ ] DTOs have validation decorators
  • [ ] Controllers have Swagger documentation
  • [ ] Proper HTTP status codes used
  • [ ] Error handling with appropriate exceptions
  • [ ] Logging for important operations
  • [ ] Transactions for related DB operations
  • [ ] Configuration via ConfigService
  • [ ] Guards for authentication/authorization
  • [ ] Cognitive complexity ≤ 15

Other skills for the same job

different authors, same section of the catalogue
Changelog Generator
by frostant
×9

Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.

774 tokens
Codex
by softaworks
×2

Use when the user asks to run Codex CLI (codex exec, codex resume) or references OpenAI Codex for code analysis, refactoring, or automated editing. Uses GPT-5.2 by default for state-of-the-art software engineering.

2k tokens
Memory Safety Patterns
by ComeOnOliver
×2

Implement memory-safe programming with RAII, ownership, smart pointers, and resource management across Rust, C++, and C. Use when writing safe systems code, managing resources, or preventing memory bugs.

6k tokens
Pysam
by K-Dense-AI
×1

Python/HTSlib workflows for genomic files. Use when reading, querying, filtering, or writing SAM/BAM/CRAM, VCF/BCF, FASTA/FASTQ, or tabix data with pysam, including pileup, coverage, indexing, and CRAM references.

34k tokens scripts
Scientific Critical Thinking
by K-Dense-AI
×1

Evaluate scientific claims and evidence quality. Use for assessing experimental design validity, identifying biases and confounders, applying evidence grading frameworks (GRADE, Cochrane Risk of Bias), or teaching critical analysis. Best for understanding evidence quality, identifying flaws. For formal peer review writing use peer-review.

26k tokens
Gh Fix CI
by openai
vendor ×1

Use when a user asks to debug or fix failing GitHub PR checks that run in GitHub Actions; use `gh` to inspect checks and logs, summarize failure context, draft a fix plan, and implement only after explicit approval. Treat external providers (for example Buildkite) as out of scope and report only the details URL.

8k tokens scripts
Declarative Agent Developer
by microsoft
vendor ×1

> Create, build, deploy, and localize declarative agents for M365 Copilot and Teams. USE THIS SKILL for ANY task involving a declarative agent — including localization, scaffolding, editing manifests, adding capabilities, and deploying. Localization requires tokenized manifests and language files that only this skill knows how to produce. "scaffold an agent", "new agent project", "add a capability", "add a plugin", "configure my agent", "deploy my agent", "fix my agent manifest", "edit my agent", "localize my agent", "add localization", "translate my agent", "multi-language agent", "add an API plugin", "add an MCP plugin", "add OAuth to my plugin", "review instructions", "improve instructions", "fix my instructions"

66k tokens
Documentation
by lingxling
×1

Documentation generation workflow covering API docs, architecture docs, README files, code comments, and technical writing.

1k tokens

How to use it

Copy the folder

Take redis/backend from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.