← StripeCONTENT HISTORY

Update to Stripe

Snapshot Oct 29, 2026 · 00:05 UTC · version 8.0.1

Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED

Instructions updated for stripe-projects

Skill instructions — Now says: the CLI is missing or its output says a newer version is required, install or upgrade to the current release: If status reports that this workspace has no...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Stripe and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

Skill instructions

Before

Sep 30, 2026 · 22:45 UTC

not installed or below version 1.40.0: If not initialized, run a preflight check first to reveal all blockers at once: stripe projects init --preflight --json If all preflight checks pass, or the only failure is `TOS_ACCEPTANCE_REQUIRED`...

After

Oct 29, 2026 · 00:05 UTC

the CLI is missing or its output says a newer version is required, install or upgrade to the current release: If status reports that this workspace has no initialized project, run: stripe projects init --accept-tos --yes --json - If init...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -37,7 +37,7 @@
 which stripe && stripe --version
 ```
 
-If not installed or below version 1.40.0:
+If the CLI is missing or its output says a newer version is required, install or upgrade to the current release:
 
 - **macOS (Homebrew):** `brew install stripe/stripe-cli/stripe` (or `brew upgrade stripe/stripe-cli/stripe`)
 - **Other platforms:** Direct the user to https://docs.stripe.com/stripe-cli/install for up-to-date instructions.
@@ -72,35 +72,22 @@
 stripe projects status --json
 ```
 
-If not initialized, run a preflight check first to reveal all blockers at once:
+If status reports that this workspace has no initialized project, run:
 
 ```bash
-stripe projects init --preflight --json
+stripe projects init --accept-tos --yes --json
 ```
 
-If all preflight checks pass, or the only failure is `TOS_ACCEPTANCE_REQUIRED`, proceed:
+- If init returns a browser pairing handoff (`BROWSER_AUTH_REQUIRED` with `details.reason` set to `handoff_prepared`), show the user `details.browser_url` and `details.verification_code`. Wait for them to approve in the browser and confirm, then retry the same init command with its original arguments. Rerunning re-presents the same code until it expires; don’t start a separate `stripe login`.
+- For other status or init failures, follow the CLI’s message, next steps, and retry conditions. Share any required action with the user. Don’t treat every status failure as an uninitialized project or retry a failed mutation without CLI guidance.
 
-```bash
-stripe projects init --accept-tos --yes
-```
-
-If any check fails with `BROWSER_AUTH_REQUIRED`, `PROJECTS_SESSION_UNUSABLE`, or `ACCOUNT_NOT_ELIGIBLE`, stop here. Report that check’s message and remedy to the user verbatim and let them resolve it — clearing these requires a browser sign-in or a Dashboard visit you cannot perform. Do not run `stripe projects init` yourself and do not re-run the preflight: neither clears the blocker for you, since only the user can complete a browser sign-in or a Dashboard step.
-
-Follow the remedy the failing check prints rather than assuming `stripe login` is the fix. If a Stripe CLI session already exists, `stripe login` reports that you are already logged in and exits 0 without changing anything — an exit code of 0 from a login command does not mean the blocker cleared.
-
-**Important:** `stripe projects init` installs the `stripe-projects-cli` skill locally at `.claude/skills/stripe-projects-cli`. This skill contains the full post-init command reference.
+`stripe projects init` installs the local `stripe-projects-cli` skill with the post-init command reference.
 
 ### Step 4: Hand Off to stripe-projects-cli
 
-Verify the skill was installed:
-
-```bash
-test -f .claude/skills/stripe-projects-cli/SKILL.md && echo "OK" || echo "MISSING"
-```
-
-If `MISSING`: re-run `stripe projects init --accept-tos --yes` **once** — the skill is bundled with the Projects plugin and installed during init. If the file is still missing after that single retry, or if init exits non-zero, report init’s error message to the user and stop. Do not keep re-running init.
+Use Read to open `.agents/skills/stripe-projects-cli/SKILL.md`, falling back to `.claude/skills/stripe-projects-cli/SKILL.md` if needed. If neither file exists, retry `stripe projects init --accept-tos --yes --json` **once** to repair the installation, then check both paths again. If init fails or the skill is still missing, follow the CLI’s message and next steps, report the problem to the user, and stop. Do not keep retrying init.
 
-If `OK`: use the locally-installed `stripe-projects-cli` skill (invoke using the Skill tool with name `stripe-projects-cli`) to continue the workflow — adding services, managing credentials, and configuring the project.
+Continue with the locally installed skill to add the requested provider, manage credentials, or configure the project. Invoke `stripe-projects-cli` with the Skill tool when available; otherwise follow the `SKILL.md` you read directly. Let the CLI output guide any provider-specific next steps. Keep the user’s chosen project and account; don’t switch accounts automatically. Browser approval alone does not establish Projects readiness.
 
 ### Step 5: Summarize and Suggest
 
@@ -159,16 +146,6 @@
 stripe projects variables delete <name> --yes
 ```
 
-## Error Handling
+## Command results
 
-| Error code | Cause | Recovery |
-| --- | --- | --- |
-| `BROWSER_AUTH_REQUIRED` | No Stripe session and browser sign-in needed | Tell the user to run `stripe projects init` themselves, in a terminal where they can finish the browser sign-in — you cannot fix this, and re-running it yourself will not clear it |
-| `PROJECTS_SESSION_UNUSABLE` | A Stripe CLI session exists, but Projects cannot read live-mode credentials from it | Report the message and remedy verbatim and stop. Do NOT retry, and do NOT run `stripe login` — it reports you are already logged in and exits 0 |
-| `ACCOUNT_NOT_ELIGIBLE` | Account not onboarded for Projects | Tell the user to run `stripe projects switch-account` to choose an account, or continue setup for this account; report the remedy the CLI printed and stop |
-| `TOS_ACCEPTANCE_REQUIRED` | Developer or provider terms not accepted | Re-run with `--accept-tos` |
-| `PROVIDER_NOT_LINKED` | Provider requires OAuth linking | Run `stripe projects link <provider>` — may open a browser |
-| `PLAN_REQUIRED` | Deployable needs a plan provisioned first | Provision the plan listed in the error, then retry |
-| `UNKNOWN_ERROR` | Unexpected failure | Show the full error message to the user and suggest running with `--debug` for diagnostics |
-| Service not in catalog | Query returned 0 results | Inform user; suggest `stripe projects catalog --json` to browse alternatives |
-| CLI not found | Stripe CLI not installed | Install using Homebrew (macOS) or follow https://docs.stripe.com/stripe-cli/install |
+Use each CLI response as the source for its message, next steps, and retry conditions. Present browser handoffs and other user actions without exposing account identifiers, credentials, or secret values. Wait for the user where the CLI requires their action, then retry only the command and arguments the CLI says can be retried. Leave account selection and provider choices with the user; don’t infer eligibility, approval, or a recovery command from an error code alone.
Full technical diff · 1 changed fields

changed /skill_md_contents

BEFORE
"---\nname: stripe-projects\ndescription: >\n  Use when the user wants to provision infrastructure or third-party services\n  using Stripe Projects. Triggers: \"I need a database\", \"set up auth\", \"add\n  caching\", \"give me a Postgres\", \"provision Redis\", \"I need hosting\", \"add a\n  vector DB\", \"get me an API key for X\", \"get credentials for X\", \"sign up for a\n  service\", \"set up monitoring\", \"show me the catalog\", \"what can I provision\",\n  \"browse providers\", \"add an LLM provider\", \"configure model provider\", \"add\n  email sending\", \"set up search\", \"add a message queue\", \"set up object\n  storage\", \"add feature flags\". Also trigger when the user asks how to get an\n  API key or credentials for any third-party service — don't tell them to sign\n  up manually; check the Projects catalog first. Also use for browsing services,\n  checking project status, listing provisioned resources, viewing env vars, or\n  any mention of projects.dev or adding/provisioning/connecting a cloud service.\nallowed-tools:\n  - Bash(stripe *)\n  - Bash(which stripe)\n  - Bash(brew install stripe/stripe-cli/stripe)\n  - Bash(brew upgrade stripe/stripe-cli/stripe)\n  - Skill\n  - Read\n\n---\n\n## Stripe Projects — Service Provisioning\n\nProvision third-party services (databases, auth, hosting, analytics, caching, AI, observability) and retrieve API keys/tokens using the Stripe Projects CLI plugin.\n\n## Workflow\n\n### Step 1: Ensure Stripe CLI + Projects Plugin\n\nCheck if the Stripe CLI is available:\n\n```bash\nwhich stripe && stripe --version\n```\n\nIf not installed or below version 1.40.0:\n\n- **macOS (Homebrew):** `brew install stripe/stripe-cli/stripe` (or `brew upgrade stripe/stripe-cli/stripe`)\n- **Other platforms:** Direct the user to https://docs.stripe.com/stripe-cli/install for up-to-date instructions.\n\nThen ensure the Projects plugin is installed:\n\n```bash\nstripe plugin install projects\n```\n\n### Step 2: Search the Catalog\n\nConfirm the requested provider/service exists:\n\n```bash\nstripe projects search <query> --json\n```\n\nIf `result_count` is 0, inform the user the service was not found and stop.\n\nIf the user’s request is vague (for example, “I need a database”), browse the catalog to suggest options:\n\n```bash\nstripe projects catalog --json\n```\n\n### Step 3: Initialize a Project\n\nCheck if a project is already initialized:\n\n```bash\nstripe projects status --json\n```\n\nIf not initialized, run a preflight check first to reveal all blockers at once:\n\n```bash\nstripe projects init --preflight --json\n```\n\nIf all preflight checks pass, or the only failure is `TOS_ACCEPTANCE_REQUIRED`, proceed:\n\n```bash\nstripe projects init --accept-tos --yes\n```\n\nIf any check fails with `BROWSER_AUTH_REQUIRED`, `PROJECTS_SESSION_UNUSABLE`, or `ACCOUNT_NOT_ELIGIBLE`, stop here. Report that check’s message and remedy to the user verbatim and let them resolve it — clearing these requires a browser sign-in or a Dashboard visit you cannot perform. Do not run `stripe projects init` yourself and do not re-run the preflight: neither clears the blocker for you, since only the user can complete a browser sign-in or a Dashboard step.\n\nFollow the remedy the failing check prints rather than assuming `stripe login` is the fix. If a Stripe CLI session already exists, `stripe login` reports that you are already logged in and exits 0 without changing anything — an exit code of 0 from a login command does not mean the blocker cleared.\n\n**Important:** `stripe projects init` installs the `stripe-projects-cli` skill locally at `.claude/skills/stripe-projects-cli`. This skill contains the full post-init command reference.\n\n### Step 4: Hand Off to stripe-projects-cli\n\nVerify the skill was installed:\n\n```bash\ntest -f .claude/skills/stripe-projects-cli/SKILL.md && echo \"OK\" || echo \"MISSING\"\n```\n\nIf `MISSING`: re-run `stripe projects init --accept-tos --yes` **once** — the skill is bundled with the Projects plugin and installed during init. If the file is still missing after that single retry, or if init exits non-zero, report init’s error message to the user and stop. Do not keep re-running init.\n\nIf `OK`: use the locally-installed `stripe-projects-cli` skill (invoke using the Skill tool with name `stripe-projects-cli`) to continue the workflow — adding services, managing credentials, and configuring the project.\n\n### Step 5: Summarize and Suggest\n\nAfter a successful service addition, provide output in this format:\n\n| Field | Value |\n| --- | --- |\n| Provider | `<provider name>` |\n| Service | `<service type>` |\n| Tier | `<tier>` |\n| Env vars | `<variable names only — never values>` |\n\nThen suggest 3–5 complementary services from different categories in the catalog (for example, if user added a database, suggest auth, hosting, or observability). Only reference services that actually appear in `stripe projects catalog --json` output — never fabricate commands or provider names.\n\n## CLI as Source of Truth\n\nThe CLI manages all state under `.projects/` and generates `.env` files. Don’t hand-edit these files. If you need to inspect project state, use the appropriate CLI command:\n\n| Task | Command |\n| --- | --- |\n| View provisioned services | `stripe projects status --json` |\n| List env var names | `stripe projects env --json` |\n| Check project health | `stripe projects status --json` |\n| Browse available services | `stripe projects catalog --json` |\n\nOnly inspect `.projects/` or `.env` directly if the user explicitly asks you to — the CLI is authoritative, so manual edits may be overwritten.\n\n## Project Variables\n\nUse project variables when the user wants to store an environment variable that doesn’t come from a provisioned provider resource, such as an app URL, feature flag, or self-managed API key.\n\nCreate or update a project variable for the active environment:\n\n```bash\nstripe projects variables set <name> --env-key <ENV_KEY> --value <value>\n```\n\nA successful `variables set` syncs the active environment output file immediately. If the user doesn’t provide the value, run the command without `--value` only in interactive mode so the CLI can prompt securely. Never print secret values in your response.\n\nBind an existing project variable to the active environment:\n\n```bash\nstripe projects env add <name> --variable --env-key <ENV_KEY>\n```\n\nRemove a variable binding from the active environment without deleting the stored variable:\n\n```bash\nstripe projects env remove <name> --variable\n```\n\nList and delete project variables:\n\n```bash\nstripe projects variables list --json\nstripe projects variables delete <name> --yes\n```\n\n## Error Handling\n\n| Error code | Cause | Recovery |\n| --- | --- | --- |\n| `BROWSER_AUTH_REQUIRED` | No Stripe session and browser sign-in needed | Tell the user to run `stripe projects init` themselves, in a terminal where they can finish the browser sign-in — you cannot fix this, and re-running it yourself will not clear it |\n| `PROJECTS_SESSION_UNUSABLE` | A Stripe CLI session exists, but Projects cannot read live-mode credentials from it | Report the message and remedy verbatim and stop. Do NOT retry, and do NOT run `stripe login` — it reports you are already logged in and exits 0 |\n| `ACCOUNT_NOT_ELIGIBLE` | Account not onboarded for Projects | Tell the user to run `stripe projects switch-account` to choose an account, or continue setup for this account; report the remedy the CLI printed and stop |\n| `TOS_ACCEPTANCE_REQUIRED` | Developer or provider terms not accepted | Re-run with `--accept-tos` |\n| `PROVIDER_NOT_LINKED` | Provider requires OAuth linking | Run `stripe projects link <provider>` — may open a browser |\n| `PLAN_REQUIRED` | Deployable needs a plan provisioned first | Provision the plan listed in the error, then retry |\n| `UNKNOWN_ERROR` | Unexpected failure | Show the full error message to the user and suggest running with `--debug` for diagnostics |\n| Service not in catalog | Query returned 0 results | Inform user; suggest `stripe projects catalog --json` to browse alternatives |\n| CLI not found | Stripe CLI not installed | Install using Homebrew (macOS) or follow https://docs.stripe.com/stripe-cli/install |\n"
AFTER
"---\nname: stripe-projects\ndescription: >\n  Use when the user wants to provision infrastructure or third-party services\n  using Stripe Projects. Triggers: \"I need a database\", \"set up auth\", \"add\n  caching\", \"give me a Postgres\", \"provision Redis\", \"I need hosting\", \"add a\n  vector DB\", \"get me an API key for X\", \"get credentials for X\", \"sign up for a\n  service\", \"set up monitoring\", \"show me the catalog\", \"what can I provision\",\n  \"browse providers\", \"add an LLM provider\", \"configure model provider\", \"add\n  email sending\", \"set up search\", \"add a message queue\", \"set up object\n  storage\", \"add feature flags\". Also trigger when the user asks how to get an\n  API key or credentials for any third-party service — don't tell them to sign\n  up manually; check the Projects catalog first. Also use for browsing services,\n  checking project status, listing provisioned resources, viewing env vars, or\n  any mention of projects.dev or adding/provisioning/connecting a cloud service.\nallowed-tools:\n  - Bash(stripe *)\n  - Bash(which stripe)\n  - Bash(brew install stripe/stripe-cli/stripe)\n  - Bash(brew upgrade stripe/stripe-cli/stripe)\n  - Skill\n  - Read\n\n---\n\n## Stripe Projects — Service Provisioning\n\nProvision third-party services (databases, auth, hosting, analytics, caching, AI, observability) and retrieve API keys/tokens using the Stripe Projects CLI plugin.\n\n## Workflow\n\n### Step 1: Ensure Stripe CLI + Projects Plugin\n\nCheck if the Stripe CLI is available:\n\n```bash\nwhich stripe && stripe --version\n```\n\nIf the CLI is missing or its output says a newer version is required, install or upgrade to the current release:\n\n- **macOS (Homebrew):** `brew install stripe/stripe-cli/stripe` (or `brew upgrade stripe/stripe-cli/stripe`)\n- **Other platforms:** Direct the user to https://docs.stripe.com/stripe-cli/install for up-to-date instructions.\n\nThen ensure the Projects plugin is installed:\n\n```bash\nstripe plugin install projects\n```\n\n### Step 2: Search the Catalog\n\nConfirm the requested provider/service exists:\n\n```bash\nstripe projects search <query> --json\n```\n\nIf `result_count` is 0, inform the user the service was not found and stop.\n\nIf the user’s request is vague (for example, “I need a database”), browse the catalog to suggest options:\n\n```bash\nstripe projects catalog --json\n```\n\n### Step 3: Initialize a Project\n\nCheck if a project is already initialized:\n\n```bash\nstripe projects status --json\n```\n\nIf status reports that this workspace has no initialized project, run:\n\n```bash\nstripe projects init --accept-tos --yes --json\n```\n\n- If init returns a browser pairing handoff (`BROWSER_AUTH_REQUIRED` with `details.reason` set to `handoff_prepared`), show the user `details.browser_url` and `details.verification_code`. Wait for them to approve in the browser and confirm, then retry the same init command with its original arguments. Rerunning re-presents the same code until it expires; don’t start a separate `stripe login`.\n- For other status or init failures, follow the CLI’s message, next steps, and retry conditions. Share any required action with the user. Don’t treat every status failure as an uninitialized project or retry a failed mutation without CLI guidance.\n\n`stripe projects init` installs the local `stripe-projects-cli` skill with the post-init command reference.\n\n### Step 4: Hand Off to stripe-projects-cli\n\nUse Read to open `.agents/skills/stripe-projects-cli/SKILL.md`, falling back to `.claude/skills/stripe-projects-cli/SKILL.md` if needed. If neither file exists, retry `stripe projects init --accept-tos --yes --json` **once** to repair the installation, then check both paths again. If init fails or the skill is still missing, follow the CLI’s message and next steps, report the problem to the user, and stop. Do not keep retrying init.\n\nContinue with the locally installed skill to add the requested provider, manage credentials, or configure the project. Invoke `stripe-projects-cli` with the Skill tool when available; otherwise follow the `SKILL.md` you read directly. Let the CLI output guide any provider-specific next steps. Keep the user’s chosen project and account; don’t switch accounts automatically. Browser approval alone does not establish Projects readiness.\n\n### Step 5: Summarize and Suggest\n\nAfter a successful service addition, provide output in this format:\n\n| Field | Value |\n| --- | --- |\n| Provider | `<provider name>` |\n| Service | `<service type>` |\n| Tier | `<tier>` |\n| Env vars | `<variable names only — never values>` |\n\nThen suggest 3–5 complementary services from different categories in the catalog (for example, if user added a database, suggest auth, hosting, or observability). Only reference services that actually appear in `stripe projects catalog --json` output — never fabricate commands or provider names.\n\n## CLI as Source of Truth\n\nThe CLI manages all state under `.projects/` and generates `.env` files. Don’t hand-edit these files. If you need to inspect project state, use the appropriate CLI command:\n\n| Task | Command |\n| --- | --- |\n| View provisioned services | `stripe projects status --json` |\n| List env var names | `stripe projects env --json` |\n| Check project health | `stripe projects status --json` |\n| Browse available services | `stripe projects catalog --json` |\n\nOnly inspect `.projects/` or `.env` directly if the user explicitly asks you to — the CLI is authoritative, so manual edits may be overwritten.\n\n## Project Variables\n\nUse project variables when the user wants to store an environment variable that doesn’t come from a provisioned provider resource, such as an app URL, feature flag, or self-managed API key.\n\nCreate or update a project variable for the active environment:\n\n```bash\nstripe projects variables set <name> --env-key <ENV_KEY> --value <value>\n```\n\nA successful `variables set` syncs the active environment output file immediately. If the user doesn’t provide the value, run the command without `--value` only in interactive mode so the CLI can prompt securely. Never print secret values in your response.\n\nBind an existing project variable to the active environment:\n\n```bash\nstripe projects env add <name> --variable --env-key <ENV_KEY>\n```\n\nRemove a variable binding from the active environment without deleting the stored variable:\n\n```bash\nstripe projects env remove <name> --variable\n```\n\nList and delete project variables:\n\n```bash\nstripe projects variables list --json\nstripe projects variables delete <name> --yes\n```\n\n## Command results\n\nUse each CLI response as the source for its message, next steps, and retry conditions. Present browser handoffs and other user actions without exposing account identifiers, credentials, or secret values. Wait for the user where the CLI requires their action, then retry only the command and arguments the CLI says can be retried. Leave account selection and provider choices with the user; don’t infer eligibility, approval, or a recovery command from an error code alone.\n"
Full snapshot data
{
  "description": "Use when the user wants to provision infrastructure or third-party services using Stripe Projects. Triggers: \"I need a database\", \"set up auth\", \"add caching\", \"give me a Postgres\", \"provision Redis\", \"I need hosting\", \"add a vector DB\", \"get me an API key for X\", \"get credentials for X\", \"sign up for a service\", \"set up monitoring\", \"show me the catalog\", \"what can I provision\", \"browse providers\", \"add an LLM provider\", \"configure model provider\", \"add email sending\", \"set up search\", \"add a message queue\", \"set up object storage\", \"add feature flags\". Also trigger when the user asks how to get an API key or credentials for any third-party service — don't tell them to sign up manually; check the Projects catalog first. Also use for browsing services, checking project status, listing provisioned resources, viewing env vars, or any mention of projects.dev or adding/provisioning/connecting a cloud service.\n",
  "included_files": [],
  "name": "stripe-projects",
  "skill_md_contents": "---\nname: stripe-projects\ndescription: >\n  Use when the user wants to provision infrastructure or third-party services\n  using Stripe Projects. Triggers: \"I need a database\", \"set up auth\", \"add\n  caching\", \"give me a Postgres\", \"provision Redis\", \"I need hosting\", \"add a\n  vector DB\", \"get me an API key for X\", \"get credentials for X\", \"sign up for a\n  service\", \"set up monitoring\", \"show me the catalog\", \"what can I provision\",\n  \"browse providers\", \"add an LLM provider\", \"configure model provider\", \"add\n  email sending\", \"set up search\", \"add a message queue\", \"set up object\n  storage\", \"add feature flags\". Also trigger when the user asks how to get an\n  API key or credentials for any third-party service — don't tell them to sign\n  up manually; check the Projects catalog first. Also use for browsing services,\n  checking project status, listing provisioned resources, viewing env vars, or\n  any mention of projects.dev or adding/provisioning/connecting a cloud service.\nallowed-tools:\n  - Bash(stripe *)\n  - Bash(which stripe)\n  - Bash(brew install stripe/stripe-cli/stripe)\n  - Bash(brew upgrade stripe/stripe-cli/stripe)\n  - Skill\n  - Read\n\n---\n\n## Stripe Projects — Service Provisioning\n\nProvision third-party services (databases, auth, hosting, analytics, caching, AI, observability) and retrieve API keys/tokens using the Stripe Projects CLI plugin.\n\n## Workflow\n\n### Step 1: Ensure Stripe CLI + Projects Plugin\n\nCheck if the Stripe CLI is available:\n\n```bash\nwhich stripe && stripe --version\n```\n\nIf the CLI is missing or its output says a newer version is required, install or upgrade to the current release:\n\n- **macOS (Homebrew):** `brew install stripe/stripe-cli/stripe` (or `brew upgrade stripe/stripe-cli/stripe`)\n- **Other platforms:** Direct the user to https://docs.stripe.com/stripe-cli/install for up-to-date instructions.\n\nThen ensure the Projects plugin is installed:\n\n```bash\nstripe plugin install projects\n```\n\n### Step 2: Search the Catalog\n\nConfirm the requested provider/service exists:\n\n```bash\nstripe projects search <query> --json\n```\n\nIf `result_count` is 0, inform the user the service was not found and stop.\n\nIf the user’s request is vague (for example, “I need a database”), browse the catalog to suggest options:\n\n```bash\nstripe projects catalog --json\n```\n\n### Step 3: Initialize a Project\n\nCheck if a project is already initialized:\n\n```bash\nstripe projects status --json\n```\n\nIf status reports that this workspace has no initialized project, run:\n\n```bash\nstripe projects init --accept-tos --yes --json\n```\n\n- If init returns a browser pairing handoff (`BROWSER_AUTH_REQUIRED` with `details.reason` set to `handoff_prepared`), show the user `details.browser_url` and `details.verification_code`. Wait for them to approve in the browser and confirm, then retry the same init command with its original arguments. Rerunning re-presents the same code until it expires; don’t start a separate `stripe login`.\n- For other status or init failures, follow the CLI’s message, next steps, and retry conditions. Share any required action with the user. Don’t treat every status failure as an uninitialized project or retry a failed mutation without CLI guidance.\n\n`stripe projects init` installs the local `stripe-projects-cli` skill with the post-init command reference.\n\n### Step 4: Hand Off to stripe-projects-cli\n\nUse Read to open `.agents/skills/stripe-projects-cli/SKILL.md`, falling back to `.claude/skills/stripe-projects-cli/SKILL.md` if needed. If neither file exists, retry `stripe projects init --accept-tos --yes --json` **once** to repair the installation, then check both paths again. If init fails or the skill is still missing, follow the CLI’s message and next steps, report the problem to the user, and stop. Do not keep retrying init.\n\nContinue with the locally installed skill to add the requested provider, manage credentials, or configure the project. Invoke `stripe-projects-cli` with the Skill tool when available; otherwise follow the `SKILL.md` you read directly. Let the CLI output guide any provider-specific next steps. Keep the user’s chosen project and account; don’t switch accounts automatically. Browser approval alone does not establish Projects readiness.\n\n### Step 5: Summarize and Suggest\n\nAfter a successful service addition, provide output in this format:\n\n| Field | Value |\n| --- | --- |\n| Provider | `<provider name>` |\n| Service | `<service type>` |\n| Tier | `<tier>` |\n| Env vars | `<variable names only — never values>` |\n\nThen suggest 3–5 complementary services from different categories in the catalog (for example, if user added a database, suggest auth, hosting, or observability). Only reference services that actually appear in `stripe projects catalog --json` output — never fabricate commands or provider names.\n\n## CLI as Source of Truth\n\nThe CLI manages all state under `.projects/` and generates `.env` files. Don’t hand-edit these files. If you need to inspect project state, use the appropriate CLI command:\n\n| Task | Command |\n| --- | --- |\n| View provisioned services | `stripe projects status --json` |\n| List env var names | `stripe projects env --json` |\n| Check project health | `stripe projects status --json` |\n| Browse available services | `stripe projects catalog --json` |\n\nOnly inspect `.projects/` or `.env` directly if the user explicitly asks you to — the CLI is authoritative, so manual edits may be overwritten.\n\n## Project Variables\n\nUse project variables when the user wants to store an environment variable that doesn’t come from a provisioned provider resource, such as an app URL, feature flag, or self-managed API key.\n\nCreate or update a project variable for the active environment:\n\n```bash\nstripe projects variables set <name> --env-key <ENV_KEY> --value <value>\n```\n\nA successful `variables set` syncs the active environment output file immediately. If the user doesn’t provide the value, run the command without `--value` only in interactive mode so the CLI can prompt securely. Never print secret values in your response.\n\nBind an existing project variable to the active environment:\n\n```bash\nstripe projects env add <name> --variable --env-key <ENV_KEY>\n```\n\nRemove a variable binding from the active environment without deleting the stored variable:\n\n```bash\nstripe projects env remove <name> --variable\n```\n\nList and delete project variables:\n\n```bash\nstripe projects variables list --json\nstripe projects variables delete <name> --yes\n```\n\n## Command results\n\nUse each CLI response as the source for its message, next steps, and retry conditions. Present browser handoffs and other user actions without exposing account identifiers, credentials, or secret values. Wait for the user where the CLI requires their action, then retry only the command and arguments the CLI says can be retried. Leave account selection and provider choices with the user; don’t infer eligibility, approval, or a recovery command from an error code alone.\n"
}

SHA-256 of public snapshot: 0687313f89f931c1bd543fbc08cb8b43d5570df23480558b8524016a012fed67