encore-service — скилл для Claude Code: что делает и как установить
Помогает настроить сервисы и каталоги в проектах на Encore.ts. Пригодится при создании микросервисов и организации вызовов через ~encore/clients.
npx skills add encoredev/skills --skill encore-service -a claude-code
npx skills add encoredev/skills --skill service -a claude-codeЧто делает encore-service
Скилл описывает правила создания бэкенд-сервисов на Encore.ts. Он задаёт обязательную структуру: каждый сервис должен содержать файл encore.service.ts с вызовом new Service(). Ассистент учится раскладывать эндпоинты в api.ts, подключать миграции и базы данных в db.ts, а также объединять связанные микросервисы в системные папки вроде commerce или identity.
Вызывать соседний сервис через прямой относительный импорт файлов нельзя: архитектура Encore требует обращения строго через виртуальный пакет ~encore/clients. Если границы сервисов ещё не определены, исходные инструкции рекомендуют сначала воспользоваться скиллом encore-architecture. Вкладывать один сервис внутрь другого тоже запрещено.
Какие задачи решает
- Создать новый микросервис на Encore.ts с обязательным файлом
encore.service.ts - Сгруппировать сервисы крупного проекта по системным папкам
- Настроить типизированные вызовы между микросервисами через
~encore/clients - Разделить эндпоинты и доступ к базе данных по структуре
api.tsиdb.ts
Примеры запросов агенту
- Создай новый сервис заказов
orderс файломencore.service.tsи базой данных - Сгруппируй сервисы оплаты и корзины внутри папки
commerce - Напиши вызов сервиса пользователей из сервиса заказов через
~encore/clients
Как установить encore-service
1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill encore-service -a claude-codenpx skills add encoredev/skills --skill service -a claude-code2Вручную: положить файлы
~/.claude/skills/service/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/service/
1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill service -a codex2Вручную: положить файлы
.agents/skills/service/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill service -a cursor2Вручную: положить файлы
.cursor/skills/service/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install encoredev/skills service2Вручную: положить файлы
.github/skills/service/SKILL.md1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill service -a gemini-cli2Командой платформы
gemini skills install https://github.com/encoredev/skills --path encore/serviceВручную: положить файлы
.devin/skills/service/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill service -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о encore-service
Как установить encore-service в Claude Code?
Выполните команду npx skills add encoredev/skills --skill encore-service -a claude-code. Также файл скилла можно положить напрямую в ~/.claude/skills/service/SKILL.md.
Зачем нужен скилл encore-service?
Он задаёт агенту правила раскладки файлов в проектах на Encore.ts. Скилл показывает структуру сервисов, схемы монолитных и распределённых систем, а также формат межсервисных запросов.
Можно ли импортировать код одного сервиса в другой напрямую?
Нет, прямые импорты между сервисами в Encore.ts запрещены. Все межсервисные вызовы должны идти исключительно через клиент ~encore/clients.
Исходный текст
SKILL.md · Apache-2.0
---
name: encore-service
description: Implement Encore.ts services and lay out an application using `encore.service.ts`, service directories, systems, and `~encore/clients`. For service boundaries and architecture decisions, use `encore-architecture`.
when_to_use: >-
User wants to add or modify an Encore.ts service or microservice, implement an already-chosen service layout, organize service files and directories, group services into system folders, or call another service. Trigger phrases: "add a service", "create a service", "add a microservice", "encore.service.ts", "lay out these services", "service directory", "systems folder", "~encore/clients".
---
# Encore Service Structure
## Instructions
### Creating a Service
Every Encore service needs an `encore.service.ts` file:
```typescript
// encore.service.ts
import { Service } from "encore.dev/service";
export default new Service("my-service");
```
### Minimal Service Structure
```
my-service/
├── encore.service.ts # Service definition (required)
├── api.ts # API endpoints
└── db.ts # Database (if needed)
```
## Application Patterns
### Single Service
A service can be defined at the application root:
```
my-app/
├── package.json
├── encore.app
├── encore.service.ts
├── api.ts
├── db.ts
└── migrations/
└── 001_initial.up.sql
```
### Multi-Service
Each service lives in its own directory:
```
my-app/
├── encore.app
├── package.json
├── user/
│ ├── encore.service.ts
│ ├── api.ts
│ └── db.ts
├── order/
│ ├── encore.service.ts
│ ├── api.ts
│ └── db.ts
└── notification/
├── encore.service.ts
└── api.ts
```
### Large Application (System-based)
Group related services into systems:
```
my-app/
├── encore.app
├── commerce/
│ ├── order/
│ │ └── encore.service.ts
│ ├── cart/
│ │ └── encore.service.ts
│ └── payment/
│ └── encore.service.ts
├── identity/
│ ├── user/
│ │ └── encore.service.ts
│ └── auth/
│ └── encore.service.ts
└── comms/
├── email/
│ └── encore.service.ts
└── push/
└── encore.service.ts
```
## Service-to-Service Calls
Import other services from `~encore/clients`:
```typescript
import { user } from "~encore/clients";
export const getOrderWithUser = api(
{ method: "GET", path: "/orders/:id", expose: true },
async ({ id }): Promise<OrderWithUser> => {
const order = await getOrder(id);
const orderUser = await user.get({ id: order.userId });
return { ...order, user: orderUser };
}
);
```
## Guidelines
- Services cannot be nested within other services
- Use `~encore/clients` for cross-service calls (never direct imports)
- Each service can have its own database
- Service names should be lowercase, descriptive
- Don't create services just for code organization - use folders instead
- Use `encore-architecture` when the service boundaries have not been decided
© encoredev · Apache-2.0 · encoredev/skills