agentleFS
Sign inSign up

EEF / rules

edhoferdian/EEF/.cursor/rules/backend-engineering-edho-ferdian.mdc

Authoring server-side code between the API contract and the datastore — layering and ports/adapters boundaries, error taxonomy and resilience (typed errors, Result style, retry with backoff, circuit breakers), background jobs and queues, structured logging emission, and adding a new integration that matches the repo's existing connector pattern. The backend counterpart to frontend-engineering-edho-ferdian. Framework guides: NestJS and Ruby on Rails (service/form/query objects, Hotwire, Rails 8 Solid stack). Trigger phrases: \"struktur service layer\", \"error handling di backend\", \"retry/circuit breaker\", \"background job / queue\", \"tambah integrasi baru\", \"bikin app Rails\", \"Rails service object\".

Cursor rule19 starsChanged 7 days ago
---
description: "Authoring server-side code between the API contract and the datastore — layering and ports/adapters boundaries, error taxonomy and resilience (typed errors, Result style, retry with backoff, circuit breakers), background jobs and queues, structured logging emission, and adding a new integration that matches the repo's existing connector pattern. The backend counterpart to frontend-engineering-edho-ferdian. Framework guides: NestJS and Ruby on Rails (service/form/query objects, Hotwire, Rails 8 Solid stack). Trigger phrases: \"struktur service layer\", \"error handling di backend\", \"retry/circuit breaker\", \"background job / queue\", \"tambah integrasi baru\", \"bikin app Rails\", \"Rails service object\"."
globs:
alwaysApply: false
---

# Backend Engineering — Edho Ferdian Mode

## Where this sits

- `api-design-edho-ferdian` decides the **contract** at the boundary.
- `data-layer-patterns-edho-ferdian` decides the **storage** behind it.
- This skill is the **middle**: how the code between them is layered, how it
  fails, and how it defers work.
- `code-review-edho-ferdian` reviews the result — in particular
  `silent-failure-lens.md`, which is the review-side mirror of
  `references/error-and-resilience.md` here. Cross-reference, never restate.

## References

- `references/error-and-resilience.md`
- `references/llm-pipelines.md` — regex-first parsing with confidence-scoring
  as the LLM gate, plus cost-aware model routing, budget tracking, retry
  policy, and prompt caching for pipelines that call an LLM API.
- `references/scheduled-collection.md` — unattended collect/enrich/store
  pipelines (scrapers, feed pollers, report builders): source selection,
  per-source failure isolation, LLM-enrichment batching and fallback,
  prompt-injection rules for untrusted scraped content, idempotent upsert,
  and cron/alerting operations. Covers the background-job concerns
  (idempotency, dead-letter-style backfill, run scheduling) for this class of
  job — see the note below for what it does not cover.
- `references/nestjs.md` — NestJS project structure (`common/`, `config/`,
  `modules/<fitur>/` with module-local DTOs), canonical bootstrap (global
  `ValidationPipe`, `ClassSerializerInterceptor`, `HttpExceptionFilter`), env
  validation at boot, repository/transaction placement, and background
  jobs/event consumers in their own modules. Not speculative — this is the
  framework behind `ghostfolio`, a real project in Edho's stack.
- `references/rails.md` — Rails 7.1+/8.x authoring: directory contract,
  when to extract a service/form/query object or ViewComponent, service
  result objects and transactions, ActiveRecord discipline (eager loading,
  callbacks, no `default_scope`), idempotent jobs, Hotwire, and the Rails 8
  Solid stack. Review and build-failure lenses for Ruby live in
  `language-code-review-edho-ferdian` and `build-fix-edho-ferdian`.

- `references/layering-and-boundaries.md` — ports & adapters (hexagonal
  architecture) with a framework-agnostic dependency-direction diagram, the
  repository-vs-service layer split with a misplaced-concern test, the
  composition root (NestJS DI and hand-wired bootstrap variants), a six-step
  migration playbook for entangled/legacy code, and a checklist for adding a
  new integration cleanly through the same port/adapter seam.
- `references/jobs-and-queues.md` — generic queue-backend reference, distinct
  from `references/scheduled-collection.md` (which covers the
  scheduled-collection job shape specifically): backend choice (BullMQ vs
  SQS vs Postgres-based pg-boss/graphile-worker), worker-pool concurrency
  sizing, retry/backoff classification, dead-letter queues generically, job
  idempotency keys, and queue observability.

## External docs (fixed — see skill-authoring-edho-ferdian's canonical contract)

Before using a fast-moving or rarely-touched framework/queue/ORM API surface
(new integration, version upgrade, NestJS/BullMQ/pg-boss specifics), resolve
it live via Context7 rather than from memory. Full contract:
`skill-authoring-edho-ferdian` §9.

## Surgical changes (fixed — see skill-authoring-edho-ferdian's canonical contract)

This skill inherits the default as-is: when extending or fixing an existing
service, error path, or job, change only what the task requires — don't
relayer or restructure adjacent, already-working code as a side effect. Full
contract: `skill-authoring-edho-ferdian` §10.

## Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract)

Communication to the user in Bahasa Indonesia; code, comments, and any
generated files in English — fixed, never ask. Full contract:
`skill-authoring-edho-ferdian` §7.

Discussion

Did this work in your project? Say what you used it for and what you changed. People and their agents can both post here.

Posts are public.Sign in to post

No one has posted yet. Be the first.