encore-go-secret — скилл для Claude Code: секреты в Encore Go
Скилл учит агента объявлять API-ключи и пароли в Encore Go через структуру secrets и задавать значения по окружениям.
npx skills add encoredev/skills --skill encore-go-secret -a claude-code
npx skills add encoredev/skills --skill go-secret -a claude-codeЧто делает encore-go-secret
Скилл описывает, как в сервисе на Encore Go завести приватные значения без коммита в репозиторий. Агент объявляет их как поля структуры secrets на уровне пакета, а Encore сам читает имена полей и подставляет нужное значение в рантайме. Имена ключей уникальны для всего приложения: SendGridAPIKey резолвится в одно и то же значение независимо от пакета, где объявлен.
Значения задаются командой encore secret set с типом окружения: prod, dev, local или pr. Для локальной разработки можно не трогать эту команду, а положить файл .secrets.local.cue в корень репозитория и добавить его в gitignore. Внутри скилла есть примеры для HTTP-запросов с токеном в заголовке и для проверки подписи вебхука Stripe.
Поле в структуре должно точно совпадать с именем, которое вы задали через encore secret set. Если имена разойдутся, значение не подставится — это первое, что стоит проверить при ошибке. Для секретов подписи вебхуков скилл отсылает к encore-go-webhook.
Какие задачи решает
- загрузить API-ключ стороннего сервиса в Go-сервис, не коммитя его
- раздать разные значения секрета для prod, dev и local
- подставить токен в заголовок HTTP-запроса к внешнему API
- проверить подпись вебхука Stripe по секрету
- задать локальные значения секретов через
.secrets.local.cue
Примеры запросов агенту
- Объяви секрет SendGridAPIKey в пакете email через структуру
secretsи покажи, как его прочитать - Как задать разные значения SendGridAPIKey для prod и local через
encore secret set? - Настрой локальный оверрайд секретов в
.secrets.local.cueи напомни добавить файл в gitignore
Как установить encore-go-secret
1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill encore-go-secret -a claude-codenpx skills add encoredev/skills --skill go-secret -a claude-code2Вручную: положить файлы
~/.claude/skills/go-secret/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/go-secret/
1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill go-secret -a codex2Вручную: положить файлы
.agents/skills/go-secret/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill go-secret -a cursor2Вручную: положить файлы
.cursor/skills/go-secret/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install encoredev/skills go-secret2Вручную: положить файлы
.github/skills/go-secret/SKILL.md1Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill go-secret -a gemini-cli2Командой платформы
gemini skills install https://github.com/encoredev/skills --path encore/go-secretВручную: положить файлы
.devin/skills/go-secret/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add encoredev/skills --skill go-secret -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о encore-go-secret
Как установить encore-go-secret в Claude?
Выполните npx skills add encoredev/skills --skill encore-go-secret -a claude-code. Альтернативная команда — npx skills add encoredev/skills --skill go-secret -a claude-code, файл скилла окажется в ~/.claude/skills/go-secret/SKILL.md.
Что делает encore-go-secret?
Показывает агенту, как объявлять секреты в Encore Go структурой secrets на уровне пакета, задавать значения по окружениям и делать локальные оверрайды.
Чем локальный оверрайд отличается от encore secret set?
encore secret set пишет значение в Encore для конкретного типа окружения. Файл .secrets.local.cue в корне репозитория подставляет значения только при локальной разработке, и его нужно добавить в gitignore.
Исходный текст
SKILL.md · Apache-2.0
---
name: encore-go-secret
description: Manage API keys, credentials, and other secrets in Encore Go using a package-level `secrets` struct.
when_to_use: >-
User wants to load a private credential into a Go service without committing it to the repo — third-party API keys (Stripe, OpenAI, Twilio, SendGrid), database passwords, signing keys, OAuth client secrets, JWT signing keys, webhook signing secrets. Covers the `var secrets struct{...}` declaration, accessing secrets as struct fields, setting values via `encore secret set`, and `.secrets.local.cue` overrides. Trigger phrases: "API key", "third-party token", "credentials", "without committing", "private key", "signing secret", "secret manager", "encore secret set".
---
# Encore Go Secrets
## Instructions
Secrets are encrypted, environment-scoped values managed by Encore. Declare them as a package-level `secrets` struct — Encore reads the field names and resolves each to the right value at runtime.
```go
package email
var secrets struct {
SendGridAPIKey string
SMTPPassword string
}
func sendEmail() error {
apiKey := secrets.SendGridAPIKey
// Use the secret...
return nil
}
```
Secret keys are globally unique across the application — `SendGridAPIKey` resolves to the same value regardless of which package declares it.
## Setting values
```bash
# Set per environment type
encore secret set --type prod SendGridAPIKey
encore secret set --type dev SendGridAPIKey
encore secret set --type local SendGridAPIKey
```
Environment types: `production` (alias `prod`), `development` (alias `dev`), `preview` (alias `pr`), `local`.
## Local overrides
For local development without going through `encore secret set`, create a `.secrets.local.cue` file at the repo root (gitignore it):
```cue
SendGridAPIKey: "SG.local-test-key"
GitHubAPIToken: "ghp_local_..."
```
## Common usage patterns
```go
package github
import (
"context"
"net/http"
)
var secrets struct {
GitHubAPIToken string
}
func callGitHub(ctx context.Context) error {
req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.github.com/user", nil)
req.Header.Set("Authorization", "token "+secrets.GitHubAPIToken)
resp, err := http.DefaultClient.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
return nil
}
```
```go
package webhooks
var secrets struct {
StripeWebhookSecret string
}
// Verify Stripe signature using secrets.StripeWebhookSecret in a raw endpoint.
```
## Guidelines
- Declare secrets as a package-level `secrets` struct, not as individual `secret(...)` calls.
- Field names must exactly match the secret name set via `encore secret set`.
- Set distinct values per environment via `encore secret set --type <env>`.
- Never commit secret values; use `.secrets.local.cue` for local overrides and gitignore it.
- For webhook signature secrets specifically, see also the `encore-go-webhook` skill.
© encoredev · Apache-2.0 · encoredev/skills