@yhonda/gcloud-secrets 2.0.11 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +84 -36
  2. package/cli.js +761 -218
  3. package/package.json +6 -5
  4. package/skills/secrets.md +40 -10
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # @yhonda/gcloud-secrets-mcp
1
+ # @yhonda/gcloud-secrets
2
2
 
3
3
  複数の GCP プロジェクトの `.env` / `.dev.vars` を1つの Secret Manager で一元管理する CLI ツール。
4
4
 
@@ -8,11 +8,14 @@ Claude Code のスキルとしても利用可能。
8
8
 
9
9
  ```
10
10
  Secret Manager (中央プロジェクト)
11
- ├── project-a/
11
+ ├── project-a/ [dev]
12
12
  │ ├── DATABASE_URL
13
13
  │ ├── API_KEY
14
14
  │ └── CLOUDFLARE_SECRET
15
- ├── project-b/
15
+ ├── project-a/ [prod]
16
+ │ ├── DATABASE_URL
17
+ │ └── API_KEY
18
+ ├── project-b/ [dev]
16
19
  │ ├── DATABASE_URL
17
20
  │ └── STRIPE_KEY
18
21
  └── project-c/
@@ -22,13 +25,7 @@ Secret Manager (中央プロジェクト)
22
25
  ## インストール
23
26
 
24
27
  ```bash
25
- # ~/bin にインストール
26
- mkdir -p ~/bin && cd ~/bin
27
- npm install @yhonda/gcloud-secrets-mcp
28
- ln -sf ~/bin/node_modules/.bin/gcloud-secrets-mcp ~/bin/gcloud-secrets-mcp
29
-
30
- # PATH に追加 (~/.bashrc または ~/.zshrc)
31
- echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
28
+ npm install -g @yhonda/gcloud-secrets
32
29
  ```
33
30
 
34
31
  ### 前提条件
@@ -39,58 +36,100 @@ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
39
36
  ## 初期設定
40
37
 
41
38
  ```bash
42
- gcloud-secrets-mcp init <project-id>
39
+ gcloud-secrets init <project-id> [--env <default-env>]
43
40
  ```
44
41
 
45
42
  設定は `~/.secrets-manager.conf` に保存されます。
46
43
 
47
- ## CLI 使い方
44
+ ## CLI コマンド
45
+
46
+ ### 基本操作
48
47
 
49
48
  ```bash
50
- # フォルダ一覧
51
- gcloud-secrets-mcp list
49
+ # フォルダ一覧(環境ごとにグループ化)
50
+ gcloud-secrets list
52
51
 
53
52
  # フォルダ内のシークレット一覧
54
- gcloud-secrets-mcp list my-project
53
+ gcloud-secrets list my-project --env dev
55
54
 
56
- # シークレットを取得(.env形式で標準出力)
57
- gcloud-secrets-mcp pull my-project
55
+ # シークレットを取得(.env 形式で標準出力)
56
+ gcloud-secrets pull my-project --env prod
58
57
 
59
58
  # シークレットをアップロード
60
- gcloud-secrets-mcp push my-project .env
59
+ gcloud-secrets push my-project .env --env dev
61
60
  ```
62
61
 
63
- ## Claude Code スキル
62
+ ### スキャン & 検索
64
63
 
65
- `~/.claude/commands/secrets.md` を作成すると `/secrets` コマンドが使えます:
64
+ ```bash
65
+ # 全リポジトリの .env 同期状況をスキャン
66
+ gcloud-secrets scan
67
+
68
+ # 指定パス以下をスキャン(特定環境のみ)
69
+ gcloud-secrets scan ~/projects --env dev
66
70
 
67
- ```markdown
68
- # GCP Secret Manager スキル
71
+ # 値から逆引き検索
72
+ gcloud-secrets search "api-key-12345"
73
+ ```
69
74
 
70
- ユーザーの指示に従って以下のコマンドを実行:
75
+ ### 自動同期 (pre-commit hook)
71
76
 
72
- - `~/bin/gcloud-secrets-mcp list` - フォルダ一覧
73
- - `~/bin/gcloud-secrets-mcp list <folder>` - シークレット一覧
74
- - `~/bin/gcloud-secrets-mcp pull <folder>` - 取得
75
- - `~/bin/gcloud-secrets-mcp push <folder> <file>` - アップロード
77
+ ```bash
78
+ # グローバル git hook をインストール(全リポジトリ対象)
79
+ gcloud-secrets hook install
80
+
81
+ # アンインストール
82
+ gcloud-secrets hook uninstall
83
+
84
+ # 手動実行
85
+ gcloud-secrets pre-commit
76
86
  ```
77
87
 
78
- ### 使用例
88
+ `hook install` すると、全リポジトリで `git commit` のたびに `.env` が自動で Secret Manager に同期されます。
79
89
 
80
- Claude に以下のように依頼できます:
90
+ **高速化の仕組み:**
91
+ - キャッシュ (`~/.secrets-manager-cache.json`) で .env の変更を検知
92
+ - 変更なし → **0 API コール**(即座に終了)
93
+ - 変更あり → フィルタ付き API + 並列取得で高速チェック&自動 push
94
+ - 常に exit 0(commit をブロックしない)
95
+ - 既存の `.husky/` や `.git/hooks/` と互換性あり
81
96
 
82
- - `/secrets list`
83
- - `/secrets pull my-project`
84
- - 「このプロジェクトの .env Secret Manager にアップロードして」
97
+ ## 環境 (Environment)
98
+
99
+ `--env` または `-e` で環境を指定できます:
100
+
101
+ ```bash
102
+ gcloud-secrets push --env dev # dev 環境にアップロード
103
+ gcloud-secrets pull -e prod # prod 環境から取得
104
+ gcloud-secrets scan --env staging # staging のみスキャン
105
+ ```
106
+
107
+ デフォルト環境は `~/.secrets-manager.conf` の `DEFAULT_ENVIRONMENT` で設定。
85
108
 
86
109
  ## コマンド一覧
87
110
 
88
111
  | コマンド | 説明 |
89
112
  |---------|------|
90
- | `init <project-id>` | 中央プロジェクトを設定 |
91
- | `list [folder]` | 一覧表示 |
92
- | `pull [folder]` | シークレットを取得 |
93
- | `push [folder] [file]` | アップロード |
113
+ | `init <project-id> [--env <default>]` | 中央プロジェクトを設定 |
114
+ | `list [folder] [--env <env>]` | 一覧表示 |
115
+ | `pull [folder] [--env <env>]` | シークレットを取得 |
116
+ | `push [folder] [file] [--env <env>]` | アップロード |
117
+ | `scan [basePath] [--env <env>]` | Git リポジトリの同期状況をスキャン |
118
+ | `search <keyword> [--env <env>]` | 値から逆引き検索 |
119
+ | `pre-commit` | .env 自動同期(git hook 用) |
120
+ | `hook install` | グローバル git hook をインストール |
121
+ | `hook uninstall` | グローバル git hook をアンインストール |
122
+
123
+ ## フォルダ名の正規化
124
+
125
+ ディレクトリ名は自動で kebab-case に変換されます:
126
+
127
+ - `gcloudSec` → `gcloud-sec`
128
+ - `myAppTest` → `my-app-test`
129
+
130
+ ## シークレット名の形式
131
+
132
+ `{folder}_{env}_{KEY}` (例: `gcloud-sec_dev_DATABASE_URL`)
94
133
 
95
134
  ## 設定
96
135
 
@@ -102,8 +141,17 @@ export SECRETS_CENTRAL_PROJECT=your-project-id
102
141
 
103
142
  # または設定ファイル (~/.secrets-manager.conf)
104
143
  SECRETS_CENTRAL_PROJECT=your-project-id
144
+ DEFAULT_ENVIRONMENT=dev
105
145
  ```
106
146
 
147
+ ## Claude Code スキル
148
+
149
+ インストール時に `~/.claude/skills/secrets.md` が自動作成され、`/secrets` コマンドが使えます:
150
+
151
+ - 「このプロジェクトの .env を Secret Manager にアップロードして」
152
+ - 「dev 環境のシークレットを確認して」
153
+ - 「全リポジトリの同期状況をスキャンして」
154
+
107
155
  ## ライセンス
108
156
 
109
157
  MIT