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.
$npx -y skills add stripe/ai --skill stripe-projectsInstalls into the current project.
Run `npx skills use "https://github.com/stripe/ai" --skill "stripe/ai/stripe-projects"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.
Use the skills in "https://github.com/stripe/ai" that are relevant to the current task. Run `npx skills add "https://github.com/stripe/ai"` and select the relevant skills, then follow their instructions.
| 1 | ## Stripe Projects — Service Provisioning |
| 2 | |
| 3 | Provision third-party services (databases, auth, hosting, analytics, caching, AI, observability) and retrieve API keys/tokens using the Stripe Projects CLI plugin. |
| 4 | |
| 5 | ## Workflow |
| 6 | |
| 7 | ### Step 1: Ensure Stripe CLI + Projects Plugin |
| 8 | |
| 9 | Check if the Stripe CLI is available: |
| 10 | |
| 11 | ```bash |
| 12 | which stripe && stripe --version |
| 13 | ``` |
| 14 | |
| 15 | If not installed or below version 1.40.0: |
| 16 | |
| 17 | - **macOS (Homebrew):** `brew install stripe/stripe-cli/stripe` (or `brew upgrade stripe/stripe-cli/stripe`) |
| 18 | - **Other platforms:** Direct the user to https://docs.stripe.com/stripe-cli/install for up-to-date instructions. |
| 19 | |
| 20 | Then ensure the Projects plugin is installed: |
| 21 | |
| 22 | ```bash |
| 23 | stripe plugin install projects |
| 24 | ``` |
| 25 | |
| 26 | ### Step 2: Search the Catalog |
| 27 | |
| 28 | Confirm the requested provider/service exists: |
| 29 | |
| 30 | ```bash |
| 31 | stripe projects search <query> --json |
| 32 | ``` |
| 33 | |
| 34 | If `result_count` is 0, inform the user the service was not found and stop. |
| 35 | |
| 36 | If the user’s request is vague (for example, “I need a database”), browse the catalog to suggest options: |
| 37 | |
| 38 | ```bash |
| 39 | stripe projects catalog --json |
| 40 | ``` |
| 41 | |
| 42 | ### Step 3: Initialize a Project |
| 43 | |
| 44 | Check if a project is already initialized: |
| 45 | |
| 46 | ```bash |
| 47 | stripe projects status --json |
| 48 | ``` |
| 49 | |
| 50 | If not initialized, run a preflight check first to reveal all blockers at once: |
| 51 | |
| 52 | ```bash |
| 53 | stripe projects init --preflight --json |
| 54 | ``` |
| 55 | |
| 56 | If all preflight checks pass (or the only failures are `TOS_ACCEPTANCE_REQUIRED` or `Stripe session authenticated`), proceed: |
| 57 | |
| 58 | ```bash |
| 59 | stripe projects init --accept-tos --yes |
| 60 | ``` |
| 61 | |
| 62 | **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. |
| 63 | |
| 64 | ### Step 4: Hand Off to stripe-projects-cli |
| 65 | |
| 66 | Verify the skill was installed: |
| 67 | |
| 68 | ```bash |
| 69 | test -f .claude/skills/stripe-projects-cli/SKILL.md && echo "OK" || echo "MISSING" |
| 70 | ``` |
| 71 | |
| 72 | If `MISSING`: re-run `stripe projects init --accept-tos --yes` — the skill is bundled with the Projects plugin and installed during init. |
| 73 | |
| 74 | 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. |
| 75 | |
| 76 | ### Step 5: Summarize and Suggest |
| 77 | |
| 78 | After a successful service addition, provide output in this format: |
| 79 | |
| 80 | | Field | Value | |
| 81 | | --- | --- | |
| 82 | | Provider | `<provider name>` | |
| 83 | | Service | `<service type>` | |
| 84 | | Tier | `<tier>` | |
| 85 | | Env vars | `<variable names only — never values>` | |
| 86 | |
| 87 | Then 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. |
| 88 | |
| 89 | ## CLI as Source of Truth |
| 90 | |
| 91 | The 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: |
| 92 | |
| 93 | | Task | Command | |
| 94 | | --- | --- | |
| 95 | | View provisioned services | `stripe projects status --json` | |
| 96 | | List env var names | `stripe projects env --json` | |
| 97 | | Check project health | `stripe projects status --json` | |
| 98 | | Browse available services | `stripe projects catalog --json` | |
| 99 | |
| 100 | Only inspect `.projects/` or `.env` directly if the user explicitly asks you to — the CLI is authoritative, so manual edits may be overwritten. |
| 101 | |
| 102 | ## Project Variables |
| 103 | |
| 104 | Use 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. |
| 105 | |
| 106 | Create or update a project variable for the active environment: |
| 107 | |
| 108 | ```bash |
| 109 | stripe projects variables set <name> --env-key <ENV_KEY> --value <value> |
| 110 | ``` |
| 111 | |
| 112 | A 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. |
| 113 | |
| 114 | Bind an existing project variable to the active environment: |
| 115 | |
| 116 | ```bash |
| 117 | stripe projects env add <name> --variable --env-key <ENV_KEY> |
| 118 | ``` |
| 119 | |
| 120 | Remove a variable binding from the active environment without deleting the stored variable: |
| 121 | |
| 122 | ```bash |
| 123 | stripe projects env remove <name> --variable |
| 124 | ``` |
| 125 | |
| 126 | List and delete project variables: |
| 127 | |
| 128 | ```bash |
| 129 | stripe projects variables list --json |
| 130 | stripe projects variables delete <name> --yes |
| 131 | ``` |
| 132 | |
| 133 | ## Error Handling |
| 134 | |
| 135 | | Error code | Cause | Recovery | |
| 136 | | --- | --- | --- | |
| 137 | | `BROWSER_AUTH_REQUIRED` | No auth session and browser needed | Tell user to run `stripe login` — you cannot fix this | |
| 138 | | `ACCOUNT_NOT_ELIGIBLE` | Account not onboarded for Projects | Tell user to run `stripe login` or visit https://projects.dev | |
| 139 | | `TOS_ACCEPTANCE_REQUIRED` | Developer or provider terms not accepted | Re-run with `--accept-tos` | |
| 140 | | `PROVIDER_NOT_LINKED` | Provider requires OAuth linking | Run `stripe projects link <provider>` — may open a browser | |
| 141 | | `PLAN_REQUIRED` | Deployable needs a plan provisioned first | Provision the plan listed in the error, then retry | |
| 142 | | `UNKNOWN_ERROR` | Unexpected failure | Show the full error message to the user and suggest running with `--debug` for diagnostics | |
| 143 | | Service not in catalog | Query returned 0 results | Inform user; suggest `stripe projects catalog --json` to browse alternatives | |
| 144 | | CLI not found | Stripe CLI not installed | Install using Homebrew (macOS) or follow https://docs.stripe.com/stripe-cli/install | |