migrate-env-to-1password
.env のシークレットを 1Password の公式 op CLI に移行し、.env を op:// 参照形式に書き換えます。実行時は op run --env-file=.env -- <コマンド> で普通にコマンドが動きます。
お好みのパッケージマネージャでインストールしてください。
gh skill install oharu121/skills migrate-env-to-1passwordnpx skills add oharu121/skills/migrate-env-to-1passwordpnpm dlx skills add oharu121/skills/migrate-env-to-1password平文の API キーが入った .env は多くのプロジェクトのデフォルトで、かつ既知のリスクです。正しい対応策は実行時に op CLI が解決する op:// 参照への置き換えですが、これが地味に面倒 — 1Password アイテムを作り、op://Vault/Item/Field の URI を全キーに対して手組みし、タイポしていないか祈る、というやつです。このスキルがその移行を一気通貫で処理します。
.env を読み、どの変数を移行するか確認し、選んだ Vault に全変数を含む 1Password ログインアイテムを 1 つ作成し、.env を書き換えて各行が正しいフィールドを指すようにします。最後に op run --env-file=.env -- env で全変数の解決を検証します。
スキルは完全対話式です — 破壊的なステップ(1Password アイテム作成、.env 上書き)はすべて AskUserQuestion で確認を取ります。op が未インストールなら brew install --cask 1password-cli のインストールも提案します。
- プロジェクトにまだ平文の
.envが残っていて、次のメンバーが入る前に Vault に移したいとき - 1Password は導入済みだが既存プロジェクトの移行をやっていない — その仕上げ
.env→ 1Password アイテム →op://参照 → 解決検証 のラウンドトリップをテスト込みで実行したいとき
-
.envを読む。 変数と値を一覧表示。移行対象を確認。 -
op未インストールならインストール。which opでチェック。なければbrew install --cask 1password-cliを提案。 -
認証確認。
op whoamiでサインイン状態を確認。未認証なら デスクトップアプリの Settings → Developer → Connect with 1Password CLI 有効化か、eval $(op signin)を案内。 -
Vault 選択。
op vault listで Vault 一覧を表示、AskUserQuestionで選択。 -
1Password アイテム作成。 全移行対象変数をフィールドとして含むログインアイテムを 1 つ作成。タイトルはプロジェクトディレクトリ名がデフォルト、変更可能。
-
.envの書き換え。 各KEY=valueをKEY=op://Vault/Item/Fieldに。上書き前に diff を表示。 -
検証。
op run --env-file=.env -- env | grep <KEY>で各変数が解決することを確認。成功メッセージには実コマンドでのop run使い方も含めます。
移行前:
OPENAI_API_KEY=sk-proj-abc123...DATABASE_URL=postgres://user:pass@host/dbSTRIPE_SECRET_KEY=sk_test_xyz...移行後:
OPENAI_API_KEY=op://Personal/my-app/openai_api_keyDATABASE_URL=op://Personal/my-app/database_urlSTRIPE_SECRET_KEY=op://Personal/my-app/stripe_secret_key以降、通常のコマンドはラッパー越しに実行:
op run --env-file=.env -- node script.jsop run --env-file=.env -- python main.py.envを直接読むスクリプト はop://の文字列リテラルをそのまま受け取ります。op run経由で実行するか、op readを呼ぶライブラリを使ってください。- Git 履歴: 平文の値が過去にコミットされていたら、移行後のローテーションは「オプション」ではなく必須手順です。
- レート制限: 大きなプロジェクトで
opがレート制限に達することがあります。少し待ってリトライで OK。
SKILL.md を GitHub で見る — 対話ワークフローの全手順、エラーハンドリング、レート制限対応。