claude-skills/

Anthropic公式スキル・プラグインの日本語ディレクトリ

last sync 22h ago
スキルOfficialdevelopment

🔐output-credentials-env-vars

プラグイン
outputai

説明

`credential:` 規則を使用して、暗号化されたクレデンシャルを環境変数に紐付けます。 次のような場合に使用: LLMプロバイダーのAPIキー(`ANTHROPIC_API_KEY`、`OPENAI_API_KEY` など)を設定する場合や、暗号化されたクレデンシャルから取得すべき任意の環境変数を設定する場合。

原文を表示

Wire encrypted credentials to environment variables using the credential: convention. Use when setting up LLM provider keys (ANTHROPIC_API_KEY, OPENAI_API_KEY) or any env var that should come from encrypted credentials.

ユースケース

  • APIキーを環境変数に設定するとき
  • 暗号化されたクレデンシャルを使用するとき
  • LLMプロバイダーの認証情報を管理するとき

本文(日本語訳)

環境変数としてのクレデンシャル

このスキルを使用するタイミング

次のような場合に使用:

  • 暗号化されたクレデンシャルから ANTHROPIC_API_KEY または OPENAI_API_KEY をセットアップする
  • 任意のクレデンシャルパスを process.env の変数に自動的に紐付ける
  • プレーンテキストの .env シークレットから暗号化クレデンシャルへ移行する
  • 環境変数が Worker 起動時に解決される理由を理解する

credential: 規則

値が credential: で始まる環境変数は、Worker 起動時に暗号化クレデンシャルから解決されます。フォーマットは以下の通りです:

ENV_VAR_NAME=credential:<dot.path>

.env の例

# これらは config/credentials.yml.enc から自動的に解決される
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key

# 任意のクレデンシャルパスが使用可能
MY_SERVICE_TOKEN=credential:my_service.token
DATABASE_URL=credential:postgres.url

暗号化クレデンシャル(config/credentials.yml.enc

anthropic:
  api_key: sk-ant-...        # → ANTHROPIC_API_KEY に解決される

openai:
  api_key: sk-...            # → OPENAI_API_KEY に解決される

my_service:
  token: tok_live_...        # → MY_SERVICE_TOKEN に解決される

postgres:
  url: postgres://...        # → DATABASE_URL に解決される

動作の仕組み

  1. Worker が dotenv 経由で .env を読み込む — ANTHROPIC_API_KEY = "credential:anthropic.api_key"
  2. Worker がすべての Workflow アクティビティファイルを読み込む(@outputai/credentials をインポート)
  3. Worker が runStartupHooks() を呼び出す — resolveCredentialRefs() が実行される
  4. resolveCredentialRefs()process.env をスキャンして credential: プレフィックスの値を検索する
  5. 一致した各変数が実際の復号化されたクレデンシャル値に置き換えられる
  6. ANTHROPIC_API_KEYprocess.env 上で "sk-ant-..." になる
  7. 最初の Workflow アクティビティが実行される際、LLM SDK が通常どおりこれを読み取る

クレデンシャル YAML の _env セクション

クレデンシャルファイルでは、_env セクションにマッピングを直接宣言することもできます。 新規プロジェクトはこの設定があらかじめ構成された状態でスキャフォールドされます:

anthropic:
  api_key: sk-ant-...
openai:
  api_key: sk-...

_env:
  ANTHROPIC_API_KEY: anthropic.api_key
  OPENAI_API_KEY: openai.api_key

注意: _env セクションはメタデータ専用です。意図されたマッピングを文書化するものであり、解決処理を駆動するものではありません。解決処理は .env 内の credential: 値によって駆動されます。両者を常に同期させておいてください。


優先順位のルール

実際の環境変数の値は常に優先されます。ANTHROPIC_API_KEY がすでに credential: 以外の値(シェルや CI シークレットなど)に設定されている場合、その値が 上書きされることはありません:

# 実際の値 — resolveCredentialRefs によって変更されない
ANTHROPIC_API_KEY=sk-ant-real-override

# プレースホルダー — 起動時に置き換えられる
ANTHROPIC_API_KEY=credential:anthropic.api_key

これにより、ファイルを変更することなく、デプロイ時に任意のクレデンシャル参照を上書きできます。


冪等性(Idempotency)

最初の解決が完了すると、ANTHROPIC_API_KEY には実際の API キーの文字列が格納され、credential: で始まる状態ではなくなります。 その後 resolveCredentialRefs() を再度呼び出しても、該当変数に対しては何も行われません(no-op)。


規則のセットアップ手順

ステップ 1: クレデンシャルを初期化する(未実施の場合)

npx output credentials init
npx output credentials edit   # anthropic.api_key、openai.api_key を追加

ステップ 2: .env を更新する

# プレーンテキストのシークレットをクレデンシャル参照に置き換える
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key

ステップ 3: 動作確認する

Worker を起動し、以下のログ行が出力されることを確認してください:

Startup hooks resolved env vars {"vars":["ANTHROPIC_API_KEY","OPENAI_API_KEY"]}

このログ行が表示されれば、クレデンシャルは正しく紐付けられています。


プログラムからのアクセス

Worker コンテキスト外で resolveCredentialRefs() を呼び出す必要がある場合:

import { resolveCredentialRefs } from '@outputai/credentials';

// 解決された環境変数名の配列を返す
const resolved = resolveCredentialRefs();
console.log('Resolved:', resolved);
// → ["ANTHROPIC_API_KEY", "OPENAI_API_KEY"]

確認チェックリスト

  • [ ] config/credentials.yml.enc に対象のクレデンシャルパスが含まれている
  • [ ] .env で関連する環境変数に credential:<path> 形式の値が使用されている
  • [ ] Worker 起動ログに Startup hooks resolved env vars が表示される
  • [ ] 最初の LLM Workflow の実行が成功する(ANTHROPIC_API_KEY が正しく設定されていることを確認)
  • [ ] シェルで実際の環境変数を設定するとクレデンシャル参照が上書きされる

関連スキル

  • output-credentials-init — 暗号化クレデンシャルファイルを作成する
  • output-credentials-edit — クレデンシャルの値を追加・更新する
  • output-dev-credentials — クレデンシャルシステムの完全なリファレンス
原文(English)を表示

Credentials as Environment Variables

When to Use This Skill

  • Setting up ANTHROPIC_API_KEY or OPENAI_API_KEY from encrypted credentials
  • Wiring any credential path to a process.env variable automatically
  • Migrating from plaintext .env secrets to encrypted credentials
  • Understanding why an env var is being resolved at worker startup

The credential: Convention

Any env var whose value starts with credential: is resolved from encrypted credentials at worker startup. The format is:

ENV_VAR_NAME=credential:<dot.path>

Example .env

# These are resolved automatically from config/credentials.yml.enc
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key

# Any credential path works
MY_SERVICE_TOKEN=credential:my_service.token
DATABASE_URL=credential:postgres.url

Encrypted credentials (config/credentials.yml.enc)

anthropic:
  api_key: sk-ant-...        # → resolves ANTHROPIC_API_KEY

openai:
  api_key: sk-...            # → resolves OPENAI_API_KEY

my_service:
  token: tok_live_...        # → resolves MY_SERVICE_TOKEN

postgres:
  url: postgres://...        # → resolves DATABASE_URL

How It Works

  1. Worker loads .env via dotenv — ANTHROPIC_API_KEY = "credential:anthropic.api_key"
  2. Worker loads all workflow activity files (importing @outputai/credentials)
  3. Worker calls runStartupHooks()resolveCredentialRefs() runs
  4. resolveCredentialRefs() scans process.env for credential: prefix values
  5. Each matching var is replaced with the actual decrypted credential value
  6. ANTHROPIC_API_KEY is now "sk-ant-..." in process.env
  7. LLM SDK reads it normally when the first workflow activity runs

The _env Section in Credentials YAML

The credentials file can also declare the mapping directly in an _env section. New projects scaffold with this pre-configured:

anthropic:
  api_key: sk-ant-...
openai:
  api_key: sk-...

_env:
  ANTHROPIC_API_KEY: anthropic.api_key
  OPENAI_API_KEY: openai.api_key

Note: The _env section is metadata only — it documents the intended mapping but does not drive resolution. Resolution is driven by the credential: values in .env. Keep both in sync.

Precedence Rules

Real env var values always take precedence. If ANTHROPIC_API_KEY is already set to a non-credential: value (e.g. from the shell or a CI secret), it is never overwritten:

# Real value — never touched by resolveCredentialRefs
ANTHROPIC_API_KEY=sk-ant-real-override

# Placeholder — gets replaced at startup
ANTHROPIC_API_KEY=credential:anthropic.api_key

This means you can override any credential ref at deploy time without changing files.

Idempotency

After the first resolution, ANTHROPIC_API_KEY contains the real API key string — it no longer starts with credential:. Subsequent calls to resolveCredentialRefs() are no-ops for that variable.

Setting Up the Convention

Step 1: Initialize credentials (if not done)

npx output credentials init
npx output credentials edit   # Add anthropic.api_key, openai.api_key

Step 2: Update .env

# Replace plaintext secrets with credential references
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key

Step 3: Verify

Start the worker and look for the log line:

Startup hooks resolved env vars {"vars":["ANTHROPIC_API_KEY","OPENAI_API_KEY"]}

If the log line appears, credentials are wired correctly.

Programmatic Access

If you need to call resolveCredentialRefs() outside of a worker context:

import { resolveCredentialRefs } from '@outputai/credentials';

// Returns array of env var names that were resolved
const resolved = resolveCredentialRefs();
console.log('Resolved:', resolved);
// → ["ANTHROPIC_API_KEY", "OPENAI_API_KEY"]

Verification Checklist

  • [ ] config/credentials.yml.enc contains the target credential paths
  • [ ] .env uses credential:<path> values for the relevant env vars
  • [ ] Worker startup log shows Startup hooks resolved env vars
  • [ ] First LLM workflow run succeeds (confirming ANTHROPIC_API_KEY is set correctly)
  • [ ] Setting a real env var in the shell overrides the credential ref

Related Skills

  • output-credentials-init — Create the encrypted credentials file
  • output-credentials-edit — Add/update credential values
  • output-dev-credentials — Full credentials system reference

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。