🎯

backend-dev-guidelines

🎯Skill

from hainamchung/agent-assistant

VibeIndex|
What it does

Enforces opinionated Node.js backend development standards with layered architecture, strong typing, and robust error handling for microservices.

πŸ“¦

Part of

hainamchung/agent-assistant(227 items)

backend-dev-guidelines

Installation

npm installInstall npm package
npm install -g @namch/agent-assistant
git cloneClone repository
git clone https://github.com/hainamchung/agent-assistant.git
Node.jsRun Node.js server
node cli/install.js install cursor # Cursor
Node.jsRun Node.js server
node cli/install.js install claude # Claude Code
Node.jsRun Node.js server
node cli/install.js install copilot # GitHub Copilot

+ 7 more commands

πŸ“– Extracted from docs: hainamchung/agent-assistant
1Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Opinionated backend development standards for Node.js + Express + TypeScript microservices. Covers layered architecture, BaseController pattern, dependency injection, Prisma repositories, Zod validation, unifiedConfig, Sentry error tracking, async safety, and testing discipline.

Overview

# Backend Development Guidelines

(Node.js Β· Express Β· TypeScript Β· Microservices)

You are a senior backend engineer operating production-grade services under strict architectural and reliability constraints.

Your goal is to build predictable, observable, and maintainable backend systems using:

  • Layered architecture
  • Explicit error boundaries
  • Strong typing and validation
  • Centralized configuration
  • First-class observability

This skill defines how backend code must be written, not merely suggestions.

---

1. Backend Feasibility & Risk Index (BFRI)

Before implementing or modifying a backend feature, assess feasibility.

BFRI Dimensions (1–5)

| Dimension | Question |

| ----------------------------- | ---------------------------------------------------------------- |

| Architectural Fit | Does this follow routes β†’ controllers β†’ services β†’ repositories? |

| Business Logic Complexity | How complex is the domain logic? |

| Data Risk | Does this affect critical data paths or transactions? |

| Operational Risk | Does this impact auth, billing, messaging, or infra? |

| Testability | Can this be reliably unit + integration tested? |

Score Formula

```

BFRI = (Architectural Fit + Testability) βˆ’ (Complexity + Data Risk + Operational Risk)

```

Range: -10 β†’ +10

Interpretation

| BFRI | Meaning | Action |

| -------- | --------- | ---------------------- |

| 6–10 | Safe | Proceed |

| 3–5 | Moderate | Add tests + monitoring |

| 0–2 | Risky | Refactor or isolate |

| < 0 | Dangerous | Redesign before coding |

---

2. When to Use This Skill

Automatically applies when working on:

  • Routes, controllers, services, repositories
  • Express middleware
  • Prisma database access
  • Zod validation
  • Sentry error tracking
  • Configuration management
  • Backend refactors or migrations

---

3. Core Architecture Doctrine (Non-Negotiable)

1. Layered Architecture Is Mandatory

```

Routes β†’ Controllers β†’ Services β†’ Repositories β†’ Database

```

  • No layer skipping
  • No cross-layer leakage
  • Each layer has one responsibility

---

2. Routes Only Route

```ts

// ❌ NEVER

router.post('/create', async (req, res) => {

await prisma.user.create(...);

});

// βœ… ALWAYS

router.post('/create', (req, res) =>

userController.create(req, res)

);

```

Routes must contain zero business logic.

---

3. Controllers Coordinate, Services Decide

  • Controllers:

* Parse request

* Call services

* Handle response formatting

* Handle errors via BaseController

  • Services:

* Contain business rules

* Are framework-agnostic

* Use DI

* Are unit-testable

---

4. All Controllers Extend `BaseController`

```ts

export class UserController extends BaseController {

async getUser(req: Request, res: Response): Promise {

try {

const user = await this.userService.getById(req.params.id);

this.handleSuccess(res, user);

} catch (error) {

this.handleError(error, res, 'getUser');

}

}

}

```

No raw res.json calls outside BaseController helpers.

---

5. All Errors Go to Sentry

```ts

catch (error) {

Sentry.captureException(error);

throw error;

}

```

❌ console.log

❌ silent failures

❌ swallowed errors

---

6. unifiedConfig Is the Only Config Source

```ts

// ❌ NEVER

process.env.JWT_SECRET;

// βœ… ALWAYS

import { config } from '@/config/unifiedConfig';

config.auth.jwtSecret;

```

---

7. Validate All External Input with Zod

  • Request bodies
  • Query params
  • Route params
  • Webhook payloads

```ts

const schema = z.object({

email: z.string().email(),

});

const input = schema.parse(req.body);

```

No validation = bug.

---

4. Directory Structure (Canonical)

```

src/

β”œβ”€β”€ config/ # unifiedConfig

β”œβ”€β”€ controllers/ # BaseController + controllers

β”œβ”€β”€ services/ # Business logic

β”œβ”€β”€ repositories/ # Prisma access

β”œβ”€β”€ routes/ # Express routes

β”œβ”€β”€ middleware/ # Auth, validation, errors

β”œβ”€β”€ validators/ # Zod schemas

β”œβ”€β”€ types/ # Shared types

β”œβ”€β”€ utils/ # Helpers

β”œβ”€β”€ tests/ # Unit + integration tests

β”œβ”€β”€ instrument.ts # Sentry (FIRST IMPORT)

β”œβ”€β”€ app.ts # Express app

└── server.ts # HTTP server

```

---

5. Naming Conventions (Strict)

| Layer | Convention |

| ---------- | ------------------------- |

| Controller | PascalCaseController.ts |

| Service | camelCaseService.ts |

| Repository | PascalCaseRepository.ts |

| Routes | camelCaseRoutes.ts |

| Validators | camelCase.schema.ts |

---

6. Dependency Injection Rules

  • Services receive dependencies via constructor
  • No importing repositories directly inside controllers
  • Enables mocking and testing

```ts

export class UserService {

constructor(

private readonly userRepository: UserRepository

) {}

}

```

---

7. Prisma & Repository Rules

  • Prisma client never used directly in controllers
  • Repositories:

* Encapsulate queries

* Handle transactions

* Expose intent-based methods

```ts

await userRepository.findActiveUsers();

```

---

8. Async & Error Handling

asyncErrorWrapper Required

All async route handlers must be wrapped.

```ts

router.get(

'/users',

asyncErrorWrapper((req, res) =>

controller.list(req, res)

)

);

```

No unhandled promise rejections.

---

9. Observability & Monitoring

Required

  • Sentry error tracking
  • Sentry performance tracing
  • Structured logs (where applicable)

Every critical path must be observable.

---

10. Testing Discipline

Required Tests

  • Unit tests for services
  • Integration tests for routes
  • Repository tests for complex queries

```ts

describe('UserService', () => {

it('creates a user', async () => {

expect(user).toBeDefined();

});

});

```

No tests β†’ no merge.

---

11. Anti-Patterns (Immediate Rejection)

❌ Business logic in routes

❌ Skipping service layer

❌ Direct Prisma in controllers

❌ Missing validation

❌ process.env usage

❌ console.log instead of Sentry

❌ Untested business logic

---

12. Integration With Other Skills

  • frontend-dev-guidelines β†’ API contract alignment
  • error-tracking β†’ Sentry standards
  • database-verification β†’ Schema correctness
  • analytics-tracking β†’ Event pipelines
  • skill-developer β†’ Skill governance

---

13. Operator Validation Checklist

Before finalizing backend work:

  • [ ] BFRI β‰₯ 3
  • [ ] Layered architecture respected
  • [ ] Input validated
  • [ ] Errors captured in Sentry
  • [ ] unifiedConfig used
  • [ ] Tests written
  • [ ] No anti-patterns present

---

14. Skill Status

Status: Stable Β· Enforceable Β· Production-grade

Intended Use: Long-lived Node.js microservices with real traffic and real risk

---

More from this repository10

🎯
senior-devops🎯Skill

Skill

🎯
cpp-pro🎯Skill

Develops high-performance C++ applications with modern C++20/23 features, template metaprogramming, and zero-overhead systems design.

🎯
senior-architect🎯Skill

Designs scalable software architectures using modern tech stacks, generating architecture diagrams, analyzing dependencies, and providing system design recommendations.

🎯
senior-frontend🎯Skill

Generates, analyzes, and scaffolds modern frontend projects using ReactJS, NextJS, TypeScript, and Tailwind CSS with automated best practices.

🎯
spec-miner🎯Skill

Extracts and documents specifications from legacy or undocumented codebases by systematically analyzing code structure, data flows, and system behaviors.

🎯
docs-seeker🎯Skill

Searches and retrieves technical documentation by executing intelligent scripts across library sources, GitHub repos, and context7.com with automated query detection.

🎯
writing-plans🎯Skill

Generates comprehensive, step-by-step implementation plans for software features with precise file paths, test-driven development approach, and clear task granularity.

🎯
file path traversal testing🎯Skill

Tests and identifies potential file path traversal vulnerabilities in code by analyzing file path handling and input validation mechanisms.

🎯
nodejs-best-practices🎯Skill

Guides developers in making strategic Node.js architecture and framework decisions by providing context-aware selection principles and modern runtime considerations.

🎯
red-team-tactics🎯Skill

Simulates adversarial attack techniques across MITRE ATT&CK framework phases, mapping network vulnerabilities and demonstrating systematic compromise strategies.