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

encore-go-bucket — скилл для Claude Code: бакеты в Encore Go

Скилл подсказывает агенту, как объявлять бакеты и работать с файлами в Encore Go: загрузка, выгрузка, подписанные ссылки.

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

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

Скилл описывает работу с объектным хранилищем в сервисах на Encore Go. Бакет объявляется как переменная уровня пакета через objects.NewBucket из encore.dev/storage/objects. Хранилище под капотом поднимает сам Encore: S3 на AWS, GCS на GCP, а локально — в памяти.

Внутри — готовые шаблоны операций: Upload в потоковом режиме, Download, Exists, Attrs, List и Remove. Для публичных бакетов есть PublicURL, для приватных — SignedUploadURL и SignedDownloadURL с TTL, чтобы браузер грузил файлы напрямую, минуя ваш сервис. Отдельный раздел про BucketRef с наборами прав: Downloader, Uploader, Lister, Attrser, Remover и другими.

Скилл советует объявлять бакеты переменными уровня пакета и по умолчанию оставлять их приватными, включая Public: true только для ассетов, которые должны скачиваться без авторизации. Если передаёте доступ в код библиотеки, берите BucketRef — права тогда видны в типах, а не в комментариях. Это повод проверить свои бакеты: публичный по умолчанию бакет с пользовательскими файлами — дыра.

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

  • загрузить аватар пользователя в Encore-сервис
  • отдать файл из бакета по временной ссылке
  • перечислить объекты в бакете с размером каждого
  • удалить документ по ключу
  • передать доступ к бакету в библиотечный код с ограниченными правами

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

  • Добавь в сервис на Encore Go приватный бакет для загрузки аватаров
  • Сделай эндпоинт, который выдаёт signed upload URL на 2 часа
  • Покажи, как через BucketRef отдать хелперу только право на скачивание

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

1Через Skills CLI (Vercel)

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

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

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

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

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

Вопросы о encore-go-bucket

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

Выполните npx skills add encoredev/skills --skill encore-go-bucket -a claude-code. Скилл встанет в ~/.claude/skills/go-bucket/SKILL.md.

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

Учит агента объявлять бакеты в Encore Go и писать код для загрузки, скачивания, листинга и удаления файлов, включая подписанные ссылки и ссылки на бакеты с наборами прав.

Когда скилл включается?

На запросах про объектное хранилище, бакеты, S3, GCS, blob, загрузку картинок и файлов пользователей — то есть когда в сервисе на Encore Go нужно хранить неструктурированные данные.

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

SKILL.md · Apache-2.0
---
name: encore-go-bucket
description: Store unstructured files in Encore Go using `objects.NewBucket` from `encore.dev/storage/objects` — uploads, images, documents, blobs.
when_to_use: >-
  User wants to upload, download, list, or delete files from an Encore Go service — 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 Go 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 as package-level variables.

```go
package uploads

import "encore.dev/storage/objects"

// Private bucket (default)
var Uploads = objects.NewBucket("user-uploads", objects.BucketConfig{})

// Public bucket — files accessible via public URL
var PublicAssets = objects.NewBucket("public-assets", objects.BucketConfig{
    Public: true,
})
```

## Operations

```go
import (
    "fmt"
    "io"
)

// Upload (streaming pattern)
writer := Uploads.Upload(ctx, "path/to/file.jpg")
_, err := io.Copy(writer, dataReader)
if err != nil {
    writer.Abort()
    return err
}
err = writer.Close()

// Download
reader := Uploads.Download(ctx, "path/to/file.jpg")
if err := reader.Err(); err != nil {
    return err
}
defer reader.Close()
data, _ := io.ReadAll(reader)

// Existence check
exists, err := Uploads.Exists(ctx, "path/to/file.jpg")

// Attributes (size, content type, ETag)
attrs, err := Uploads.Attrs(ctx, "path/to/file.jpg")

// List
for err, entry := range Uploads.List(ctx, &objects.Query{}) {
    if err != nil {
        return err
    }
    fmt.Println(entry.Key, entry.Size)
}

// Delete
err := Uploads.Remove(ctx, "path/to/file.jpg")

// Public URL (only for public buckets)
url := PublicAssets.PublicURL("image.jpg")
```

## Signed URLs

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

```go
import "time"

// Signed upload URL (expires in 2 hours)
url, err := Uploads.SignedUploadURL(ctx, "user-uploads/avatar.jpg",
    objects.WithTTL(time.Duration(7200)*time.Second))

// Signed download URL
url, err := Uploads.SignedDownloadURL(ctx, "documents/report.pdf",
    objects.WithTTL(time.Duration(7200)*time.Second))
```

## Bucket References

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

```go
// Create a reference with download permission only
ref := objects.BucketRef[objects.Downloader](Uploads)

// Combine permissions via an interface
type myPerms interface {
    objects.Downloader
    objects.Uploader
}
ref := objects.BucketRef[myPerms](Uploads)

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

## Guidelines

- Declare buckets as package-level variables.
- 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» →
google-cloud-storage-basics официальный google Скилл помогает агенту работать с объектами и бакетами Google Cloud Storage: загружать файлы, настраивать доступ и управлять хранением. CX Codex 5 516установок 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установок

Из того же набора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-bucket Учит агента работать с объектным хранилищем Encore.ts: загрузка, скачивание, список и удаление файлов через Bucket. CX Codex +1 419установок encore-webhook Скилл учит агента принимать входящие вебхуки от Stripe, GitHub, Slack и других сервисов через api.raw() и проверять подписи. CX Codex +1 418установок encore-go-secret Скилл учит агента объявлять API-ключи и пароли в Encore Go через структуру secrets и задавать значения по окружениям. CX Codex +1 307установок encore-go-cache Скилл учит агента писать кэш в Redis из Go-сервисов на Encore: типизированные keyspaces, TTL, атомарные счётчики. CX Codex +1 304установок

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

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