# Stripe Projects CLI

サードパーティーサービスをアプリに追加し、認証情報をプロジェクトに同期して、アップグレードを管理します。

詳細については、[Stripe CLI リファレンス](https://docs.stripe.com/cli.md)を参照してください。

> Stripe Projects は公開プレビューで利用できます。[projects.dev](https://projects.dev/) の待機リストにご登録いただき、先行提供版をリクエストしてください。

Stripe プロジェクトは 1 つのアプリケーションまたはコードベースを表し、プロバイダーアカウントのサービスとリソースをグループ化します。

- **プロバイダーアカウント**: Vercel、Supabase、Clerk、PostHog などのプロバイダーのアカウント。
- **サービス**: データベース、認証・認可、分析などのプロバイダーの製品。
- **リソース**: アカウントのサービスのインスタンス、および関連付けられた認証情報と環境変数。`test-db-1`、`auth`、`test-analytics-1` など。

プロジェクトを使用して、以下を実行できます。

- 既存のプロバイダーアカウントを関連付けるか、新しいアカウントを作成する
- データベース、認証・認可インスタンス、分析プロジェクトなどのリソースをプロビジョニングする
- 認証情報をボールトに格納し、環境変数として環境 (`.env`) に同期する
- アップグレードの管理と認証情報のローテーション

プロバイダーアカウントを Stripe アカウントに関連付けると、明示的に関連付けを削除するまで、そのアカウントは認証された状態のままになります。同じ Stripe アカウントで新しいプロジェクトにプロバイダーアカウントを再利用できます。別の Stripe アカウントを使用する場合は、そのプロバイダーアカウントを再度関連付ける必要があります。

プロジェクトは、新しいディレクトリまたは既存のコードベースで初期化できます。既存のコードベースを使用してサービスを追加すると、新しい認証情報と環境変数が既存の環境 (`.env`) とプロジェクト構成にマージされます。

## Before you begin

- Stripe アカウント
- [Stripe CLI](https://docs.stripe.com/stripe-cli/install.md) がインストールされ、最新である
- Projects プラグインのインストール:

```bash
stripe plugin install projects
```

### コーディングエージェントを使用する

コーディングエージェントに Stripe CLI と Projects プラグインのインストールを依頼できます。

```bash
Install the Stripe CLI, install the `projects` plugin, verify `stripe projects --help` works.
```

## クイックスタート

この例では、ホスティング、データベース、認証、分析をプロジェクトに関連付け、認証情報をローカル環境に同期します。

```bash
# Create a project
stripe projects init my-app

# Associate a provider account or add a service
stripe projects link vercel
# or
stripe projects add vercel/project

# Add more services
stripe projects add clerk/auth
stripe projects add posthog/analytics
```

Stripe Projects は認証情報をボールトに格納し、環境変数をローカル環境 (`.env`) に自動的に同期します。

```bash
VERCEL_PROJECT_ID=...
SUPABASE_DATABASE_URL=...
CLERK_SECRET_KEY=...
POSTHOG_PROJECT_API_KEY=...
```

## プロジェクトを作成する

プロジェクトに使用するディレクトリで `init` を実行します:

```bash
stripe projects init [name]
```

これにより、そのディレクトリの Stripe プロジェクトが初期化されます。名前を省略すると、Stripe Projects はフォルダ名を使用します。

Stripe Projects は、`.projects/`の下にプロジェクトの状態を書き込みます。これにより、関連付けられたプロバイダーアカウント、プロビジョニングされたリソース、ローカルのプロジェクト構成が追跡されます。プロジェクトで使用されるツールは、`.projects/state.json` で確認できます。プライベートリポジトリの `.projects/state.local.json` ファイルには、チームが同じプロジェクト状態を共有するために必要なリソース ID が含まれています。

## コーディングエージェントを使用する

プロジェクトを初期化すると、Stripe Projects はコーディングエージェントのスキルをローカルのプロジェクトディレクトリに書き込みます。これらのスキルは、Stripe Projects ワークフローを通じてエージェントがプロジェクトを操作するためのコンテキストとアクションを提供します。

その後、エージェントに次のようなタスクの実行を依頼できます。

- 「既存の Neon アカウントをリンクし、データベースをプロビジョニングします。」
- 「無料ティアで Turso 認証・認可と PostHog を追加する」
- 「このリポジトリに必要なサービスを設定し、変更内容を説明する」

エージェントは同じ Stripe Projects CLI コマンドを使用します。このため、CLI を直接使用するのと同じ確定的で監査可能なパスを使用して、認証情報のプロビジョニング、アップグレード、設定、同期を行うことができます。

プロビジョニングおよび認証情報交換中にブラウザのポップアップが表示されないように、次のフローをお勧めします。

- Stripe アカウントにログイン
- `stripe projects link` を使用して、既存のプロバイダーアカウントを関連付けます (または新規作成します)。
- `stripe projects billing add` を使用して決済手段を追加します。
- エージェントセッションを開始します。

## プロジェクトステータスの確認

サービスの追加またはプロバイダーの接続が完了したら、`status` を実行してプロジェクトを確認します:

```bash
stripe projects status
```

これには、プロジェクト名、Stripe アカウント、関連するプロバイダーアカウント、プロビジョニングされたリソース、現在の階層、稼働状況が表示されます。

## プロジェクトをワークフローに導入する

Stripe プロジェクトは、新しいアプリケーション、既存のコードベース、および有効な設定に使用できます。

### 新しいプロジェクトを開始

新しいアプリがある場合は、プロジェクトの作成、プロバイダーアカウントの関連付け、新しいアカウントの作成、データベース、認証、分析などのリソースのプロビジョニングを行うことができます。

### 既存のコードベースにサービスを追加する

既存のアプリケーションディレクトリで Stripe プロジェクトを初期化できます。既存のディレクトリを使用してサービスを追加すると、新しい認証情報と環境変数が既存の環境 (`.env`) とプロジェクト構成にマージされます。これは、アプリにすでにホスティングがあるが、データベース、認証、分析、機能フラグ、その他の管理対象インフラなどのサービスが必要な場合に便利です。

### 既存の設定を管理する

すでに使用しているプロバイダーアカウントを Stripe アカウントに関連付けると、プロジェクトは 1 つの場所に表示されます。これにより、既存のリソースを関連付け、関連する環境変数を追加することもできます。

### 複数の環境で作業

1 つの Stripe プロジェクトは、開発環境と本番環境を含む複数の環境を表すことができます。各環境に必要なリソースを関連付けるかプロビジョニングしてから、変数を適切なプロジェクト構成とローカルの `.env` ファイルに同期します。

## サービスカタログを参照する

`catalog` を使用して、利用可能なすべてのプロバイダー、そのサービスカテゴリー、プランの段階、アドオン、価格を一覧表示します:

```bash
stripe projects catalog
stripe projects catalog <provider>
stripe projects catalog <category>
```

## サービスを管理する

### サービスを追加する

プロバイダーのサービスをプロジェクトに追加します。

```bash
stripe projects add <provider>/<service>
```

サービスを追加すると、サービスを追加する前に、既存のプロバイダーアカウントを Stripe アカウントに関連付けるか、アカウントを作成します。

サービスを追加すると、プロバイダーアカウントでリソースがプロビジョニングされます。データベース、認証インスタンス、分析プロジェクト、機能フラグ、またはその他の管理対象インフラをアプリにプロビジョニングするには、`add` コマンドを使用します。

### プロバイダーをリンクコマンドに関連付ける

プロバイダーアカウントを関連付けるか、リソースをプロビジョニングせずにアカウントを作成します。これは、リソースをプロビジョニングする前にプロバイダーとの接続を確立する場合に、エージェント主導のワークフローで役立ちます。

```bash
stripe projects link <provider>
```

### サービスを削除する

プロバイダーアカウントとローカルプロジェクトからサービスを削除します。

```bash
stripe projects remove <provider>/<service>
#or
stripe projects remove <resource_name>
```

### 認証情報のローテーション

特定のサービスの認証情報をローテーションする:

```bash
stripe projects rotate <provider>/<service>
#or
stripe projects rotate <resource_name>
```

### サービスティアのアップグレード

サービスに現在のティアよりも多くの容量、機能、または制限が必要な場合は、サービスのティアをアップグレードできます。

```bash
stripe projects upgrade <provider> | <provider>/<service> | <resource_name>
```

アップグレードする前に、ステータスまたはプロバイダーのダッシュボードで各サービスの現在のティアを確認してください。

Stripe への決済手段の登録は一度のみです。CLI で有料プランを選択すると、決済手段が [Shared Payment Token](https://docs.stripe.com/agentic-commerce/concepts/shared-payment-tokens.md) にトークン化されます。あわせて、そのアップグレード用の決済手段が決済代行業者に付与されます。決済代行業者はこのトークンを使って請求するため、元の決済手段が共有されることはありません。

> 開発者プレビューでは、この決済ハンドオフはアメリカ、EU、イギリス、カナダでのみ利用できます。

### プロバイダーダッシュボードを開く

デフォルトのブラウザーでプロバイダーのダッシュボードを開きます:

```bash
stripe projects open <provider>
```

## 環境変数を管理する

Stripe Projects は認証情報をボールトに格納し、サービスを追加または変更したときに環境変数をローカル環境 (`.env`) に自動的に同期します。

### 変数の一覧表示

すべてのプロジェクト環境変数を表示します。値は出力に表示されません。

```bash
stripe projects env
```

環境変数も、リソースのプロビジョニング後に自動的に同期されます。

### 変数の同期

ローカルの `.env` ファイルを更新して、認証情報ボールトに補充します。また、リソースのプロビジョニング後に自動的に更新されます。

```bash
stripe projects env --pull
```

## 請求の管理

決済手段は Stripe アカウントに関連付けられています。

### 決済手段の表示

登録されている決済手段を表示する:

```bash
stripe projects billing show
```

### 決済手段の追加または更新

決済手段を追加するか、既存の決済手段を置き換えます。

```bash
stripe projects billing add
```

## LLM コンテキストを生成

プロジェクトコンテキストとプロバイダーが提供するすべての LLM コンテキストファイルを組み合わせたローカルファイルを表示および書き込みます:

```bash
stripe projects llm-context
```

## 非対話型環境を使用する

すべてのコマンドは、CI/CD パイプライン、スクリプト、エージェントなどの非対話型環境のフラグをサポートします。

### グローバルフラグ

| フラグ                | 説明                                             |
| ------------------ | ---------------------------------------------- |
| `--json`           | フォーマットされたテキストではなく構造化 JSON として出力を返します。          |
| `--no-interactive` | 対話型プロンプトと確認ダイアログを無効にします。必要な入力がない場合、コマンドは失敗します。 |
| `--auto-confirm`   | サービスを削除する場合など、確認プロンプトを自動的に受け入れます。              |
| `--quiet`          | 必須ではない出力を抑制し、最終結果またはエラーのみを返します。                |

## 利用可能なプロバイダー

これらのプロバイダーは、導入プロトコルを Stripe と共同で設計しました。このプロトコルは、プロビジョニング、プランの選択、アップグレード、認証情報のハンドオフを標準化します。

| プロバイダー       | 主なカテゴリー             |
| ------------ | ------------------- |
| Vercel       | ホスティング              |
| Cloudflare   | ホスティング、ドメイン         |
| Railway      | ホスティング、データベース、ストレージ |
| Fly.io       | ホスティング、データベース       |
| Supabase     | データベース、認証、ストレージ     |
| Neon         | データベース、認証           |
| PlanetScale  | データベース              |
| Turso        | データベース              |
| Chroma       | ベクターデータベース          |
| Clerk        | 認証                  |
| PostHog      | 分析、機能フラグ            |
| Amplitude    | 分析、機能フラグ            |
| Mixpanel     | 分析                  |
| Firecrawl    | 検索                  |
| OpenRouter   | AI モデル              |
| Hugging Face | AI                  |
| Inngest      | AI                  |
| Runloop      | サンドボックス、ホスティング      |

`stripe projects catalog` はいつでも実行でき、プロバイダーと利用可能なサービスティアの最新リストを確認できます。あるいは、[projects.dev/providers](https://projects.dev/providers) のディレクトリをご覧ください。

> #### プロバイダーをリクエスト
> 
> Stripe Projects ネットワークのプロバイダーになることに関心がある場合、または特定のプロバイダーをリクエストする場合は、[provider-request@stripe.com](mailto:provider-request@stripe.com) にお問い合わせください。

## コマンドリファレンス

| コマンド                                             | 説明                              |
| ------------------------------------------------ | ------------------------------- |
| `init <name>`                                    | プロジェクトを作成し、サインインまたは登録します。       |
| `status`                                         | プロジェクト名、サービス、ティア、状況を表示します。      |
| `catalog`                                        | 利用可能なプロバイダー、カテゴリー、サービスを一覧表示します。 |
| `追加 <provider>/<category>`                       | プロジェクトにサービスを追加します。              |
| `link <provider>`                                | プロバイダーをプロジェクトに接続します。            |
| `削除 <provider>/<service> | <resource_name>`      | プロジェクトからサービスを削除します。             |
| `ローテート <provider>/<service> | <resource_name>`   | サービスの認証情報をローテーションします。           |
| `アップグレード <provider>/<service> | <resource_name>` | サービスのティアを変更します。                 |
| `開く <provider>`                                  | ブラウザーでプロバイダーのダッシュボードを開きます。      |
| `env [--pull]`                                   | プロジェクトの環境変数を一覧表示または同期します。       |
| `billing show`                                   | 現在の決済手段を表示します。                  |
| `billing add`                                    | 決済手段を追加または置き換えます。               |
| `llm-context`                                    | 結合された LLM コンテキストファイルを生成します。     |
