Skip to content
cccskills
FreePublished on GitHub

graphql-server-architect

DataLoader, subscriptions, federation, and schema stitching for GraphQL APIs. Activate on: GraphQL, DataLoader, subscription, federation, schema stitching, resolver, SDL, Apollo, Yoga. NOT for: REST API design (use api-architect), frontend GraphQL clients (use relevant frontend skill).

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md5.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

GraphQL Server Architect

Design production-grade GraphQL APIs with efficient data loading, real-time subscriptions, and federated schema architecture.

Activation Triggers

Activate on: "GraphQL", "DataLoader", "subscription", "federation", "schema stitching", "resolver", "SDL", "Apollo Server", "GraphQL Yoga", "Pothos", "query complexity"

NOT for: REST API design → api-architect | Frontend GraphQL client → relevant frontend skill | Database queries → data-warehouse-optimizer

Quick Start

  1. Choose framework — GraphQL Yoga 5.x (lightweight), Apollo Server 4.x (ecosystem), Mercurius (Fastify)
  2. Schema-first or code-first — SDL for team collaboration, Pothos/Nexus for type-safe code-first
  3. Implement DataLoader — batch and cache per-request to solve N+1 queries
  4. Set query complexity limits — prevent clients from requesting arbitrarily deep/wide queries
  5. Add persisted queries — lock down production to known queries, improve CDN caching

Core Capabilities

DomainTechnologies
ServersGraphQL Yoga 5.x, Apollo Server 4.x, Mercurius 14+
SchemaPothos (code-first), SDL (schema-first), GraphQL Codegen
FederationApollo Federation 2.8+, GraphQL Mesh, Schema Stitching
PerformanceDataLoader, @defer/@stream, persisted queries, query complexity
Real-TimeGraphQL Subscriptions (WebSocket), graphql-ws, SSE transport

Architecture Patterns

DataLoader Pattern (N+1 Prevention)

import DataLoader from 'dataloader';

// Create per-request DataLoader
function createLoaders() {
  return {
    userById: new DataLoader<string, User>(async (ids) => {
      // Single batch query instead of N queries
      const users = await db.query('SELECT * FROM users WHERE id = ANY($1)', [ids]);
      const map = new Map(users.map(u => [u.id, u]));
      return ids.map(id => map.get(id) ?? new Error(`User ${id} not found`));
    }),
  };
}

// Resolver uses loader — automatically batched
const resolvers = {
  Post: {
    author: (post, _, { loaders }) => loaders.userById.load(post.authorId),
  },
};

Apollo Federation 2 (Supergraph)

Clients
   ↓
Apollo Router (supergraph)
   ├─→ Users Subgraph     (owns User type)
   ├─→ Orders Subgraph    (extends User with orders)
   └─→ Products Subgraph  (owns Product type)

Each subgraph is an independent GraphQL service.
Router composes query plans across subgraphs.
# Users subgraph
type User @key(fields: "id") {
  id: ID!
  name: String!
  email: String!
}

# Orders subgraph — extends User from Users subgraph
type User @key(fields: "id") {
  id: ID!
  orders: [Order!]!
}

type Order {
  id: ID!
  total: Float!
  status: OrderStatus!
}

Query Complexity Limiting

import { createComplexityLimitRule } from 'graphql-validation-complexity';

const complexityLimit = createComplexityLimitRule(1000, {
  scalarCost: 1,
  objectCost: 10,
  listFactor: 20,
  onCost: (cost) => {
    if (cost > 800) logger.warn(`High complexity query: ${cost}`);
  },
});

const server = createYoga({
  schema,
  validationRules: [complexityLimit],
});

Anti-Patterns

  1. No DataLoader — resolvers that query the DB individually create N+1 problems; always batch with DataLoader
  2. Unbounded queries — without depth/complexity limits, a single query can join your entire graph and crash the server
  3. Exposing internal IDs — use opaque Relay-style global IDs, not raw database primary keys
  4. Fat resolvers — resolvers should delegate to service/repository layers, not contain business logic
  5. Subscription over-fetching — do not broadcast full objects; send minimal change payloads and let clients re-query

Quality Checklist

  • DataLoader used for all relationship resolvers (no N+1)
  • Query depth limit set (max 10-15 levels)
  • Query complexity limit enforced (reject expensive queries)
  • Persisted queries enabled in production (no arbitrary queries from clients)
  • Schema published to registry with breaking change detection
  • Resolver-level tracing enabled (Apollo Studio, OpenTelemetry)
  • Error masking: internal errors never leak to clients in production
  • Pagination uses Relay cursor-based spec (not offset)
  • Input validation on all mutation arguments
  • Subscription authentication verified on connection init

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.

The English summary is being prepared. Showing the original description.

curiositech/windags-skills16Updated Oct 19, 2026

Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape.

The English summary is being prepared. Showing the original description.

curiositech/windags-skills16Updated Oct 19, 2026

Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).

The English summary is being prepared. Showing the original description.

curiositech/windags-skills16Updated Oct 19, 2026

Apply crisis decision-making research to agent routing, uncertainty triage, and coordination failure analysis in time-pressured systems. Use when diagnosing handoff failures, analytical paralysis, or expert judgment under incomplete information. NOT for routine coding, simple CRUD design, or static single-agent tasks with complete information.

The English summary is being prepared. Showing the original description.

curiositech/windags-skills16Updated Oct 19, 2026

Use for insight, reframing, contradiction, impasse, and anomaly-driven problem solving when execution effort no longer helps. NOT for routine optimization, error correction, or well-specified tasks with known solution paths.

The English summary is being prepared. Showing the original description.

curiositech/windags-skills16Updated Oct 19, 2026

Apply normative BDI reasoning to agents that must detect norms, choose which commitments to internalize, and resolve conflicts by comparing consequences. Use when obligations, prohibitions, or policies collide in autonomous systems. NOT for simple fixed-priority rules, pure constraint satisfaction, or domains where no real normative conflict exists.

The English summary is being prepared. Showing the original description.

curiositech/windags-skills16Updated Oct 19, 2026

See all skills by curiositech

Report a problem with this skill