К основному содержанию
скилл CX Codex

encore-bucket — скилл для Claude Code: файлы в Encore.ts

Учит агента работать с объектным хранилищем Encore.ts: загрузка, скачивание, список и удаление файлов через Bucket.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add encoredev/skills --skill encore-bucket -a claude-code
npx skills add encoredev/skills --skill bucket -a claude-code
Открыть на GitHub

Что делает encore-bucket

Скилл описывает, как объявлять бакеты в Encore.ts через Bucket из encore.dev/storage/objects. Бакеты объявляются на уровне пакета, а Encore сам поднимает хранилище: S3 на AWS, GCS на GCP, локально — in-memory. По умолчанию бакет приватный, публичный включается опцией public: true.

Внутри — примеры операций: upload(), download(), exists(), attrs(), remove() и list(). Отдельный блок про подписанные ссылки signedUploadUrl() и signedDownloadUrl() с параметром ttl, чтобы браузер загружал и скачивал файлы напрямую, не гоняя трафик через ваш сервис. Ещё есть ссылки на бакет с набором прав — Uploader, Downloader, Lister, Attrser, Remover и другие — их удобно передавать в хелперы, потому что права зашиты в тип.

Ошибки разобраны по именам: ObjectNotFound, PreconditionFailed, ObjectsError. Скилл советует объявлять бакеты на уровне пакета и не открывать публичный доступ без нужды. Если проект не на Encore.ts, примеры бесполезны: здесь всё завязано на его рантайм и провижининг хранилища.

Какие задачи решает

  • загрузить аватар пользователя в объектное хранилище
  • отдать файл из браузера по временной ссылке
  • перечислить объекты в бакете с их размером
  • удалить файл и проверить, что он исчез
  • передать доступ к бакету в хелпер с ограниченными правами

Примеры запросов агенту

  • Сделай бакет user-uploads для аватаров и добавь загрузку через upload()
  • Нужна подписанная ссылка на скачивание documents/report.pdf с ttl 7200
  • Объяви публичный бакет public-assets и верни publicUrl() для картинки

Как установить encore-bucket

1Через Skills CLI (Vercel)

npx skills add encoredev/skills --skill encore-bucket -a claude-code
npx skills add encoredev/skills --skill bucket -a claude-code

2Вручную: положить файлы

~/.claude/skills/bucket/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/bucket/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о encore-bucket

Как установить encore-bucket в Claude?

Выполните npx skills add encoredev/skills --skill encore-bucket -a claude-code.

Что делает encore-bucket?

Даёт агенту шаблоны кода для объектного хранилища Encore.ts: объявление бакетов, загрузка и скачивание файлов, подписанные ссылки и ссылки на бакет с набором прав.

Какое хранилище использует Encore под бакетами?

Encore провижинит его сам: S3 на AWS, GCS на GCP, а локально — in-memory.

Исходный текст

SKILL.md · Apache-2.0
---
name: encore-bucket
description: Store unstructured files in Encore.ts using `Bucket` from `encore.dev/storage/objects` — uploads, images, documents, blobs.
when_to_use: >-
  User wants to upload, download, list, or delete files — profile pictures, avatars, document uploads, image storage, media assets, generated reports, blob data. Covers public vs private buckets, signed upload/download URLs, bucket references with permission types (Uploader, Downloader, Lister, Attrser, Remover), and operations like `upload()`, `download()`, `list()`, `signedUploadUrl()`. Trigger phrases: "object storage", "bucket", "S3", "GCS", "blob", "user uploads", "profile picture", "image upload", "store a file", "file storage".
---

# Encore Object Storage

## Instructions

A `Bucket` is a logical store for files. Encore provisions the underlying object storage (S3 on AWS, GCS on GCP, in-memory locally). Declare buckets at package level.

```typescript
import { Bucket } from "encore.dev/storage/objects";

// Private bucket (default)
export const uploads = new Bucket("user-uploads", {
  versioned: false,  // Set to true to keep multiple versions
});

// Public bucket — files accessible via public URL
export const publicAssets = new Bucket("public-assets", {
  public: true,
  versioned: false,
});
```

## Operations

```typescript
// Upload
const attrs = await uploads.upload("path/to/file.jpg", buffer, {
  contentType: "image/jpeg",
});

// Download
const data = await uploads.download("path/to/file.jpg");

// Existence check
const exists = await uploads.exists("path/to/file.jpg");

// Attributes (size, content type, ETag)
const meta = await uploads.attrs("path/to/file.jpg");

// Delete
await uploads.remove("path/to/file.jpg");

// List
for await (const entry of uploads.list({})) {
  console.log(entry.key, entry.size);
}

// Public URL (only for public buckets)
const url = publicAssets.publicUrl("image.jpg");
```

## Signed URLs

Generate temporary URLs so clients can upload/download directly without going through your service:

```typescript
const uploadUrl = await uploads.signedUploadUrl("user-uploads/avatar.jpg", { ttl: 7200 });
const downloadUrl = await uploads.signedDownloadUrl("documents/report.pdf", { ttl: 7200 });
```

## Bucket References

Pass bucket access to other code with a specific permission set:

```typescript
import { Uploader, Downloader } from "encore.dev/storage/objects";

const uploaderRef = uploads.ref<Uploader>();
const downloaderRef = uploads.ref<Downloader>();

// Permission types: Downloader, Uploader, Lister, Attrser, Remover,
// SignedDownloader, SignedUploader, ReadWriter
```

## Errors

- `ObjectNotFound` — object doesn't exist
- `PreconditionFailed` — upload preconditions not met (e.g. `setIfNotExists`)
- `ObjectsError` — base error type

## Guidelines

- Declare buckets at package level.
- Default to private buckets; opt into `public: true` only for assets meant for unauthenticated download.
- Use signed URLs for browser uploads/downloads instead of streaming through your service.
- Use bucket references when passing access to helpers — they encode the permission contract in the type system.

© encoredev · Apache-2.0 · encoredev/skills

Похожие скиллы

Всё по теме «Бэкенд и API» →
neon-object-storage neondatabase Настраивает S3-совместимое хранилище Neon, которое ветвится вместе с базой данных. Пригодится для загрузок, изображений и документов приложения. CX Codex +1 28 200установок cloudflare-r2 devops-skills Помогает управлять хранилищем Cloudflare R2, настраивать бакеты через Wrangler, генерировать подписанные ссылки и связывать данные с Cloudflare Workers. CX Codex +1 335установок google-cloud-storage-bucket-architect официальный google Скилл проектирует и создаёт бакеты Cloud Storage в Google Cloud с учётом задачи и настроек безопасности проекта. Подойдёт, когда нужно добавить объектное хранилище в приложение, сервис или пайплайн. CX Codex 2 800установок tigris-s3-migration tigrisdata Скилл ведёт миграцию объектного хранилища с AWS S3, GCS или Azure Blob на Tigris. Пригодится, когда нужно переключить бакет без остановки продакшена. CX Codex +1 3 100установок s3-explore duckdb Скилл показывает, что лежит в бакете, и выполняет SQL-запросы к Parquet, CSV и JSON прямо в объектном хранилище. CX Codex +1 703установок object-storage devops-skills Скилл для работы с объектным хранилищем: команды AWS CLI, бакет-политики, lifecycle-правила, версионирование и self-hosted MinIO. CX Codex +1 350установок

Из того же набора10

encore-code-review Скилл проверяет код на Encore.ts перед мержем: инфраструктура внутри функций, require() вместо импортов, сырые Error вместо APIError. CX Codex +1 819установок encore-testing Помогает писать и запускать автотесты для Encore.ts через encore test и vitest или jest. Пригодится, когда нужно покрыть эндпоинт или сервис и не возиться с изолированными базами вручную. CX Codex +1 791установок encore-frontend Скилл связывает фронтенд на React, Next.js, Vue или Svelte с бэкендом Encore.ts: генерация типизированного клиента, CORS и токены авторизации. CX Codex +1 763установок encore-go-code-review Скилл проверяет Go-код на Encore: инфраструктура внутри функций, забытый context, SQL-инъекции и другие анти-паттерны перед мержем. CX Codex +1 553установок encore-webhook Скилл учит агента принимать входящие вебхуки от Stripe, GitHub, Slack и других сервисов через api.raw() и проверять подписи. CX Codex +1 418установок encore-go-secret Скилл учит агента объявлять API-ключи и пароли в Encore Go через структуру secrets и задавать значения по окружениям. CX Codex +1 307установок encore-go-bucket Скилл подсказывает агенту, как объявлять бакеты и работать с файлами в Encore Go: загрузка, выгрузка, подписанные ссылки. CX Codex +1 307установок encore-go-cache Скилл учит агента писать кэш в Redis из Go-сервисов на Encore: типизированные keyspaces, TTL, атомарные счётчики. CX Codex +1 304установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой