backend-development · moizibnyousaf — скилл для Claude Code: API, схемы БД, TDD
Скилл для проектирования REST API, схем баз данных и микросервисной архитектуры. Пригодится, когда агент пишет бэкенд и нужно, чтобы он держался одних конвенций.
npx skills add MoizIbnYousaf/ai-agent-skills --skill backend-development -a claude-codeЧто делает backend-development
Внутри — набор справочных шаблонов, на которые агент опирается при генерации кода. REST-конвенции: GET /users, POST /users, PATCH /users/:id, вложенные маршруты вида GET /users/:id/posts. Формат ответа с блоком data и пагинацией в meta, формат ошибок с кодом, сообщением и списком полей.
Схемы БД описаны на SQL: SERIAL для внутреннего ключа и UUID в public_id, мягкое удаление через deleted_at, индексы по email и created_at DESC. Есть курсорная пагинация вместо OFFSET и оценка числа строк через pg_class. Аутентификация — JWT с полями sub, iat, exp, scope и middleware, который достаёт токен из заголовка Authorization.
Кэширование построено на cache-aside: сначала redis.get, при промахе запрос в базу и setex на 3600 секунд, при обновлении — redis.del. Рядом лимитер на 100 запросов в минуту с ключом по IP и ответом 429. Примеры на TypeScript и SQL, так что для проекта на другом стеке шаблоны придётся перекладывать самому.
Какие задачи решает
- спроектировать REST-маршруты для новой сущности
- написать схему таблицы с UUID и мягким удалением
- добавить JWT-проверку в middleware
- прикрутить кэш к чтению пользователя
- ограничить частоту запросов по IP
Примеры запросов агенту
- Спроектируй REST API для заказов по конвенциям скилла backend-development
- Сделай схему таблицы users с public_id UUID, deleted_at и индексами
- Добавь cache-aside для getUser через redis и инвалидацию при обновлении
Как установить backend-development
1Через Skills CLI (Vercel)
npx skills add MoizIbnYousaf/ai-agent-skills --skill backend-development -a claude-code2Вручную: положить файлы
~/.claude/skills/backend-development/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/backend-development/
1Через Skills CLI (Vercel)
npx skills add MoizIbnYousaf/ai-agent-skills --skill backend-development -a codex2Вручную: положить файлы
.agents/skills/backend-development/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add MoizIbnYousaf/ai-agent-skills --skill backend-development -a cursor2Вручную: положить файлы
.cursor/skills/backend-development/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install MoizIbnYousaf/ai-agent-skills backend-development2Вручную: положить файлы
.github/skills/backend-development/SKILL.md1Через Skills CLI (Vercel)
npx skills add MoizIbnYousaf/ai-agent-skills --skill backend-development -a gemini-cli2Командой платформы
gemini skills install https://github.com/MoizIbnYousaf/ai-agent-skills --path skills/backend-developmentВручную: положить файлы
.devin/skills/backend-development/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add MoizIbnYousaf/ai-agent-skills --skill backend-development -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора6
Другие версии backend-development
Похожие
Рядом в теме «Бэкенд и API»
Всё по теме «Бэкенд и API» →Вопросы о backend-development
Как установить backend-development в Claude?
Выполните npx skills add MoizIbnYousaf/ai-agent-skills --skill backend-development -a claude-code. Файл скилла окажется в ~/.claude/skills/backend-development/SKILL.md.
Что делает backend-development?
Даёт агенту шаблоны для проектирования API, схем баз данных, микросервисных паттернов и разработки через тесты. Агент подставляет их, когда вы просите спроектировать API или схему.
Нужны ли Redis и PostgreSQL для работы скилла?
Сам скилл — это текстовые шаблоны, он ничего не запускает. Примеры кэша написаны под Redis, а запросы и схема — под PostgreSQL, поэтому для чужой СУБД их придётся переписать.
Исходный текст
SKILL.md · MIT
---
name: backend-development
description: Backend API design, database architecture, microservices patterns, and test-driven development. Use for designing APIs, database schemas, or backend system architecture.
source: wshobson/agents
license: MIT
version: 4.1.0
---
# Backend Development
## API Design
### RESTful Conventions
```
GET /users # List users
POST /users # Create user
GET /users/:id # Get user
PUT /users/:id # Update user (full)
PATCH /users/:id # Update user (partial)
DELETE /users/:id # Delete user
GET /users/:id/posts # List user's posts
POST /users/:id/posts # Create post for user
```
### Response Format
```json
{
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 100
}
}
```
### Error Format
```json
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid input",
"details": [
{ "field": "email", "message": "Invalid format" }
]
}
}
```
## Database Patterns
### Schema Design
```sql
-- Use UUIDs for public IDs
CREATE TABLE users (
id SERIAL PRIMARY KEY,
public_id UUID DEFAULT gen_random_uuid() UNIQUE,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Soft deletes
ALTER TABLE users ADD COLUMN deleted_at TIMESTAMPTZ;
-- Indexes
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_created ON users(created_at DESC);
```
### Query Patterns
```sql
-- Pagination with cursor
SELECT * FROM posts
WHERE created_at < $cursor
ORDER BY created_at DESC
LIMIT 20;
-- Efficient counting
SELECT reltuples::bigint AS estimate
FROM pg_class WHERE relname = 'users';
```
## Authentication
### JWT Pattern
```typescript
interface TokenPayload {
sub: string; // User ID
iat: number; // Issued at
exp: number; // Expiration
scope: string[]; // Permissions
}
function verifyToken(token: string): TokenPayload {
return jwt.verify(token, SECRET) as TokenPayload;
}
```
### Middleware
```typescript
async function authenticate(req: Request, res: Response, next: Next) {
const token = req.headers.authorization?.replace('Bearer ', '');
if (!token) {
return res.status(401).json({ error: 'Unauthorized' });
}
try {
req.user = verifyToken(token);
next();
} catch {
res.status(401).json({ error: 'Invalid token' });
}
}
```
## Caching Strategy
```typescript
// Cache-aside pattern
async function getUser(id: string): Promise<User> {
const cached = await redis.get(`user:${id}`);
if (cached) return JSON.parse(cached);
const user = await db.users.findById(id);
await redis.setex(`user:${id}`, 3600, JSON.stringify(user));
return user;
}
// Cache invalidation
async function updateUser(id: string, data: Partial<User>) {
await db.users.update(id, data);
await redis.del(`user:${id}`);
}
```
## Rate Limiting
```typescript
const limiter = rateLimit({
windowMs: 60 * 1000, // 1 minute
max: 100, // 100 requests per window
keyGenerator: (req) => req.ip,
handler: (req, res) => {
res.status(429).json({ error: 'Too many requests' });
}
});
```
## Observability
- **Logging**: Structured JSON logs with request IDs
- **Metrics**: Request latency, error rates, queue depths
- **Tracing**: Distributed tracing with correlation IDs
- **Health checks**: `/health` and `/ready` endpoints
© MoizIbnYousaf · MIT · MoizIbnYousaf/ai-agent-skills