CommunityCodierung & Entwicklunggithub.com

jakirhussainkhan/dev-skills

Verwenden Sie diesen Skill für Backend-Entwicklung: Serverlogik, Authentifizierung, Microservices, serverlose Funktionen, Middleware, Hintergrundjobs, Caching-Strategien und Backend-Architekturmuster. Auslöser-Schlüsselwörter: Backend, Server, API-Endpunkt, Middleware, Authentifizierung, Autorisierung, Microservice, serverlos, Hintergrundjob, Warteschlange, Caching, Session.

Was ist dev-skills?

Dieser Skill ist ein umfassendes Toolkit für die Backend-Entwicklung, das Entwickler und KI-Agenten dabei unterstützt, robuste, skalierbare und sichere serverseitige Anwendungen zu erstellen. Er deckt eine breite Palette von Themen ab, darunter Serverlogik, Authentifizierungsmuster (JWT, Session-basiert), Microservices, serverlose Funktionen, Middleware, Hintergrundjobs und Warteschlangen, Caching-Strategien und Backend-Architekturmuster. Hauptplattformen, die implizit unterstützt werden, sind Node.js/TypeScript, wie die Codebeispiele zeigen, aber die Prinzipien gelten für alle Backend-Ökosysteme. Der Skill folgt Kernprinzipien wie zustandslosen Diensten, Fehlervermeidung, Idempotenz und Beobachtbarkeit. Er definiert eine klare API-Endpunktstruktur mit einem Request-Lebenszyklus (Rate Limiting → Authentifizierung → Autorisierung → Validierung → Geschäftslogik), standardisierte Erfolgs- und Fehlerantworten, eine strukturierte Fehlerbehandlungshierarchie sowie Middleware-Anforderungen für Produktions-APIs. Hintergrundjobs werden mit Mustern wie Fire-and-Forget, geplant, verzögert und Wiederholungen mit Dead-Letter-Warteschlangen behandelt. Die Umgebungskonfiguration erfolgt ausschließlich über Umgebungsvariablen, die beim Start zwingend validiert werden. Dieser Skill ist ideal für Aufgaben wie Backend-Entwicklung, API-Erstellung, Authentifizierungsimplementierung, Microservice-Architektur und Fehlerbehandlung.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jakirhussainkhan/dev-skills/tree/HEAD/.github/skills/backend-dev

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Backend-Entwicklung

Kernprinzipien

  • Zustandslose Dienste — Sitzungszustand nicht im Speicher speichern; Redis oder eine Datenbank verwenden
  • Schnell scheitern — Eingaben an der Grenze validieren, Fehler früh zurückgeben
  • Idempotenz — POST/PUT-Endpunkte, die mehrfach sicher aufgerufen werden können
  • Beobachtbarkeit — Jeder Dienst benötigt Logs, Metriken und Traces

API-Endpunktstruktur

Request-Lebenszyklus

Request → Rate Limiting → Authentifizierung → Autorisierung → Validierung → Geschäftslogik → Antwort

Diese Reihenfolge niemals überspringen. Auth vor Geschäftslogik. Validierung vor Verarbeitung.

Antwortstandards

// Erfolg
{ "data": { ... }, "meta": { "page": 1, "total": 100 } }

// Fehler
{ 
  "error": { 
    "code": "VALIDATION_ERROR",
    "message": "Human-readable description",
    "details": [{ "field": "email", "issue": "Invalid format" }]
  }
}

Authentifizierungsmuster

JWT-Best Practices

  • Kurze Access-Token-TTL (15 Min) + langes Refresh-Token (7 Tage)
  • Refresh-Token in httpOnly-Cookie speichern (nicht localStorage)
  • Signatur, Ablauf, Aussteller und Zielgruppe validieren
  • Refresh-Tokens bei Nutzung rotieren
  • Widerrufsliste verwalten oder nur kurzlebige Token verwenden

Session-basierte Authentifizierung

  • Session-ID in httpOnly, Secure, SameSite-Cookie speichern
  • Session-Daten in Redis mit TTL speichern
  • Session-ID nach Login neu generieren (Session-Fixierung-Prävention)

Autorisierung

// Autorisierung auf Service-Ebene prüfen, nicht nur auf Routenebene
async function getOrder(userId: string, orderId: string) {
  const order = await db.orders.findById(orderId)
  if (!order) throw new NotFoundError()
  // Autorisierungsprüfung — Benutzer kann nur eigene Bestellungen sehen
  if (order.userId !== userId) throw new ForbiddenError()
  return order
}

Hintergrundjobs & Warteschlangen

Warteschlangen verwenden für:

  • E-Mail-Versand
  • Bild-/Dateiverarbeitung
  • Externe API-Aufrufe, die nicht synchron sein müssen
  • Langlaufende Aufgaben

Job-Muster

Feuern-und-Vergessen: In die Warteschlange einreihen und sofort zurückkehren
Geplant: Zu einer bestimmten Zeit ausführen (Cron)
Verzögert: Nach X Minuten/Stunden ausführen
Wiederholung: Bei Fehlschlag erneut versuchen (mit Backoff)

Immer implementieren:

  • Dead-Letter-Warteschlange für fehlgeschlagene Jobs
  • Idempotenzschlüssel, um doppelte Verarbeitung zu verhindern
  • Timeout pro Job
  • Maximale Wiederholungsanzahl

Fehlerbehandlung

// Strukturierte Fehlerhierarchie
class AppError extends Error {
  constructor(
    public message: string,
    public statusCode: number,
    public code: string
  ) { super(message) }
}

class ValidationError extends AppError {
  constructor(details: ValidationDetail[]) {
    super('Validation failed', 400, 'VALIDATION_ERROR')
    this.details = details
  }
}

// Globaler Fehler-Handler
app.use((err, req, res, next) => {
  if (err instanceof AppError) {
    return res.status(err.statusCode).json({ error: err })
  }
  // Unerwartete Fehler protokollieren
  logger.error('Unexpected error', { err, req })
  res.status(500).json({ error: { code: 'INTERNAL_ERROR' } })
})

Middleware-Checkliste

Jede Produktions-API benötigt:

  • Request-Logging (Methode, Pfad, Status, Dauer)
  • Rate Limiting (pro IP, pro Benutzer, pro Endpunkt)
  • CORS-Konfiguration (explizite Whitelist)
  • Helmet / Sicherheits-Header
  • Request-ID-Weitergabe (für verteiltes Tracing)
  • Body-Größenbegrenzungen
  • Timeout-Behandlung

Umgebungskonfiguration

// Niemals Konfiguration hartcodieren — immer aus Umgebungsvariablen
const config = {
  db: {
    url: process.env.DATABASE_URL,      // erforderlich
    poolSize: parseInt(process.env.DB_POOL_SIZE ?? '10')
  },
  jwt: {
    secret: process.env.JWT_SECRET,     // erforderlich
    expiresIn: process.env.JWT_TTL ?? '15m'
  }
}

// Erforderliche Konfiguration beim Start validieren — schnell scheitern
const required = ['DATABASE_URL', 'JWT_SECRET']
for (const key of required) {
  if (!process.env[key]) throw new Error(`Missing required env: ${key}`)
}

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

jakirhussainkhan/dev-skills

Use this skill when building AI agents, designing multi-agent systems, integrating LLMs into applications, building RAG pipelines, working with vector databases, implementing MCP servers, or designing agent communication and orchestration patterns. Trigger on keywords like: agent, LLM, RAG, embeddings, vector DB, orchestration, tool use, memory, intent clarification, MCP, LangChain, LangGraph, CrewAI, AutoGen, Microsoft Agent Framework.

jakirhussainkhan/dev-skills

Use this skill when using AI to learn new technologies, navigate unfamiliar codebases, do interview prep, identify skill gaps, or build a personal learning system. Also use when helping someone learn rather than just doing the work for them. Trigger on keywords: learn, learning, understand, explain, teach me, how does X work, unfamiliar codebase, interview prep, skill gap, study, tutorial.

jakirhussainkhan/dev-skills

Use this skill when designing how an AI agent should communicate with developers — intent clarification, progress reporting, ambiguity handling, confirmation before irreversible actions, error communication, self-correction, task tracking, and plan mode. Also use when building agent UX or defining agent behavior rules. Trigger on keywords: agent communication, intent clarification, plan mode, agent behavior, task tracking, confirmation, agent UX, agentic workflow, agent protocol.

jakirhussainkhan/dev-skills

Use this skill when designing or reviewing APIs — REST, GraphQL, tRPC, or gRPC. Trigger on keywords: API design, REST, GraphQL, tRPC, gRPC, endpoint, schema, route, OpenAPI, Swagger, API versioning, pagination, API contract, HTTP methods.

Verwandte Skills