Skip to content
Back to skills

Apollo Server

ASecurity

Apollo Server configuration, plugins, caching, federation, and performance optimization.

  • 1,760 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 2, 2026
ai-agentstypescriptbashexpressapibackendfullstackperformance

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 2, 2026

npx -y skills add a5c-ai/babysitter --skill apollo-server --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Apollo Server?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Apollo Server
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/a5c-ai-apollo-server-babysitter/badge)](https://www.skillsdirectory.com/skills/a5c-ai-apollo-server-babysitter)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: apollo-server
description: Apollo Server configuration, plugins, caching, federation, and performance optimization.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
graph:
  domains: [domain:web-development]
  specializations: [specialization:web-development]
  skillAreas: [skill-area:graphql-schema-design, skill-area:backend-api-design]
  roles: [role:backend-engineer, role:fullstack-engineer]
  topics: [topic:graphql-schema-design, topic:api-design]

---

# Apollo Server Skill

Expert assistance for implementing GraphQL APIs with Apollo Server.

## Capabilities

- Configure Apollo Server with Express/Fastify
- Implement plugins for logging and metrics
- Set up caching strategies
- Build Apollo Federation gateways
- Handle authentication context
- Optimize performance with persisted queries

## Usage

Invoke this skill when you need to:
- Set up Apollo Server
- Implement caching
- Build federated services
- Add custom plugins
- Configure subscriptions

## Patterns

### Basic Setup

```typescript
import { ApolloServer } from '@apollo/server';
import { expressMiddleware } from '@apollo/server/express4';
import { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer';
import express from 'express';
import http from 'http';
import cors from 'cors';
import { typeDefs } from './schema';
import { resolvers } from './resolvers';
import { createContext } from './context';

async function startServer() {
  const app = express();
  const httpServer = http.createServer(app);

  const server = new ApolloServer({
    typeDefs,
    resolvers,
    plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],
  });

  await server.start();

  app.use(
    '/graphql',
    cors(),
    express.json(),
    expressMiddleware(server, {
      context: createContext,
    })
  );

  await new Promise<void>((resolve) =>
    httpServer.listen({ port: 4000 }, resolve)
  );

  console.log('Server ready at http://localhost:4000/graphql');
}
```

### Context and Authentication

```typescript
import { PrismaClient } from '@prisma/client';
import jwt from 'jsonwebtoken';

const prisma = new PrismaClient();

export interface Context {
  prisma: PrismaClient;
  user: { id: string; role: string } | null;
}

export async function createContext({ req }): Promise<Context> {
  const token = req.headers.authorization?.replace('Bearer ', '');
  let user = null;

  if (token) {
    try {
      user = jwt.verify(token, process.env.JWT_SECRET!) as Context['user'];
    } catch {}
  }

  return { prisma, user };
}
```

## Best Practices

- Use plugins for cross-cutting concerns
- Implement proper error formatting
- Set up response caching
- Use DataLoader for batching

## Target Processes

- graphql-api-development
- apollo-federation
- api-development

Files in this skill

  • README.md595 B
  • SKILL.md2.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…