> nestjs-search

Integrate Elasticsearch and implement search index Sync patterns in NestJS. Use when integrating Elasticsearch or implementing search index sync in NestJS. (triggers: **/*.service.ts, **/search/**, Elasticsearch, CQRS, Synchronization)

fetch
$curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/nestjs-search?format=md"
SKILL.mdnestjs-search

Search Engine & Full-Text

Priority: P1 (OPERATIONAL)

Full-text search implementation with Elasticsearch and database patterns.

  • Pattern: CQRS (Command Query Responsibility Segregation).
    • Write: To Primary Database (Postgres/MySQL). Source of Truth.
    • Read (Complex): To Search Engine (Elasticsearch, OpenSearch, MeiliSearch). Optimized for filtering, fuzzy search, and aggregation.

Synchronization (The Hard Part)

  • Dual Write (Anti-Pattern): await db.save(); await es.index();.
    • Why: Partial failures leave data inconsistent. Slows down HTTP response.
  • Event-Driven (Recommended):
    1. Service writes to DB.
    2. Service emits EntityUpdated.
    3. Event Handler (Async) pushes to Queue (BullMQ).
    4. Worker indexes document to Search Engine with retries.
  • CDC (Golden Standard): Change Data Capture (Debezium). Connects directly to DB transaction log. No app conceptual overhead, but higher ops complexity.

Organization

  • Module: Encapsulate the client in a SearchModule.
  • Abstraction: Create generic SearchService<T> helpers.
    • indexDocument(id, body)
    • search(query, filters)
  • Mapping: Use class-transformer to map Entities to "Search Documents". Search docs should be flatter than Relational entities constraints.

Testing

  • E2E: Do not mock the search engine in critical E2E flows.
  • Docker: Spin up elasticsearch:8 container in the test harness to verify indexing works.

Anti-Patterns

  • No dual writes to DB + ES: Use event-driven or CDC pattern; dual writes risk partial failure inconsistency.
  • No Elasticsearch for structured queries: Use DB indexes for filtering; ES is for full-text and complex search.
  • No ES mocks in E2E search tests: Spin up elasticsearch:8 container to verify indexing behavior accurately.

> related_skills --same-repo

> common-store-changelog

Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve

> golang-tooling

Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)

> common-ui-design

Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)

> common-owasp

OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)

┌ stats

installs/wk0
░░░░░░░░░░
github stars452
██████████
first seenMar 17, 2026
└────────────

┌ repo

HoangNguyen0403/agent-skills-standard
by HoangNguyen0403
└────────────