Skip to content
122 changes: 122 additions & 0 deletions CLAUDE.md.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# About me

I'm [YOUR NAME], on the CX team at **StackBlitz** (Bolt.new). [One or two sentences about your background — comfort with shell, APIs, code reading; this calibrates how Claude explains things to you.]

# My tool stack

- **Front** — customer emails / support conversations. API base: `https://api2.frontapp.com`, Bearer token. Front API key lives in `~/Documents/Raycast-scripts/cx-briefing/.env`.
- **Linear** — tickets, bug reports, engineering escalations. Use the Linear connector (MCP).
- **Notion** — internal documentation and KB. Use the Notion connector (MCP). Notion's built-in AI can search across Slack/Linear/internal docs.
- **Slack** — internal team messages. Use the Slack connector (MCP).
- **GitHub Codespaces + Claude** — deep-dive investigations into customer repos and Bolt code. The "CX agent" specifically = a Codespace running the `stackblitz/cx-agent` repo with the Claude CLI inside (kicked off via `gh-cx-agent.sh` once you've set up your own Codespace).
- **Claude Chrome extension** — installed. Drive the browser via the `Claude_in_Chrome` MCP.
- **Granola** — call notes / transcripts.
- **Query** — internal StackBlitz tool for support metrics. Lives at `query.new`.

# Secrets & API keys

All Raycast scripts source `~/Documents/Raycast-scripts/cx-briefing/.env`. Required:

- `FRONT_API_KEY` — primary one. **For StackBlitz team members:** the shared key is stored in the team 1Password CX vault (search "Front API Key"). Personal team keys may also work if you generate them at `app.frontapp.com/settings/tools/api`.
- `ANTHROPIC_API_KEY` — only needed for the `cx-briefing` AI synthesis layer; not required for the regular CX session workflow.

Optional:
- `LINEAR_API_KEY`, `LINEAR_TEAM_IDS` — only used by the `customer-360` Linear-mention scan. The MCP connector handles general Linear use during conversations.
- `SLACK_BOT_TOKEN` — same: only for `customer-360`'s Slack scan. MCP connector handles general Slack.
- `SENTRY_AUTH_TOKEN` — for the optional Sentry section in `cx-briefing`.
- `FRONT_AUTHOR_EMAIL` / `FRONT_AUTHOR_ID` — overrides for the auto-resolved `{firstname}@stackblitz.com` Front identity.

**Stripe (if you use the promo scripts) — macOS Keychain, not `.env`.** Service `raycast-stripe-api`, account `stripe-api-key`. **For StackBlitz team members:** the shared Stripe API key is in the 1Password CX vault. To install:
```bash
security add-generic-password -s raycast-stripe-api -a stripe-api-key -w 'sk_live_...'
```

# Admin URLs & API endpoints

Two admin surfaces:

- **stackblitz.com/admin** — account-level identity.
- By ID: `https://stackblitz.com/admin/users?q%5Bid_eq%5D={id}&commit=Filter&order=id_desc`
- By email: `https://stackblitz.com/admin/users?q%5Bby_email_address%5D={url-encoded-email}&commit=Filter&order=id_desc`
- **bolt.new/admin** — Bolt-specific (rate limits, tokens, org, sites, snapshots).
- Dashboard `/admin`, Sites `/admin/sites`, Static Hosting `/admin/static-hosting`, Bolt DB `/admin/bolt-db`, Token Usage `/admin/token-usage`, Snapshots `/admin/snapshots`, Netlify Partner Accounts `/admin/netlify-partner-accounts`.

**Bolt rate-limit & token endpoints:**
- Show: `https://bolt.new/api/rate-limits/{userId}`
- Reset monthly: `https://bolt.new/api/rate-limits/reset/{userId}/month`
- Reset all: `https://bolt.new/api/rate-limits/reset/{userId}/all`
- Org-scoped: `https://bolt.new/api/rate-limits/org/{orgId}/{userId}`

**Front API endpoints I use most:**
- Conversation: `/conversations/{cnv_id}` (IDs prefixed: `cnv_`, contacts `crd_`)
- Contact by email: `/contacts/alt:email:{url-encoded-email}`
- Teammates lookup: `/teammates?limit=200`
- Post conversation comment (internal note): `POST /conversations/{cnv_id}/comments` with `{author_id, body}`. **`@username` in the body auto-parses to a teammate mention** — no need for `@[Name](tea_xxx)` markup.

# Knowledge bases

Two to consult, in order:

1. **Notion** — internal KB (known issues, internal process, team decisions). First stop for "what do we know about this internally."
2. **support.bolt.new** — customer-facing help center, built on Mintlify. First stop for "what should I tell the customer" — if it's documented publicly, link to it.

Never paste internal Notion content into a customer reply without confirming it's safe to share.

# How I work

**Quality gate for support drafts.** After drafting or polishing any Bolt.new customer support response, run the `bolt-qa-checker` skill before treating it as ready to send. Trigger it automatically when a draft exists — don't wait to be asked. **If the QA pass flags Empathy & Communication, run the `empathy-tone-checker` skill next for phrase-level rewrite options.**

**Live-session policy.** [REPLACE WITH YOUR TEAM POLICY. Common pattern: dedicated live sessions reserved for Premium-tier plans (~$500+/mo); discretion may extend to higher tiers below that; never offer below the agreed minimum.] When declining a session request, frame it positively ("outside what our support team can offer at this plan level") and pivot to a substantive written diagnostic rather than a flat no.

**Always reply in English** to customer messages — even when the customer writes in another language. The team needs to be able to follow every thread and take over if needed. Match the customer's content and tone, just keep the language English.

**Draft style when delivering structural feedback.** Lead with concrete praise of what the customer is doing well, *then* introduce the size/scale critique cleanly separated. Phrases like "the issue is volume per turn, not quality" or "constraint here is X, not Y" land much better than mixed praise-and-critique paragraphs. Avoid framing labels like "Where I land:" — make the bridge from decline to diagnostic feel like one continuous thought.

**Escalation to the CX agent (Codespace) for deeper dives.** When admin chat hits its depth ceiling (need to read project code, trace a specific generation, inspect snapshots), the next step is the CX agent in the `stackblitz/cx-agent` Codespace. To escalate from a local CX session:

1. Stop, surface what you've found from admin chat, and ask me before triggering the deep dive.
2. On confirmation, run `bash ~/Documents/Raycast-scripts/open-cx-deepdive.sh CNV`.
3. The primer instructs the CX agent to post findings back as a Front comment on the same conversation.

If I run `open-cx-deepdive.sh` directly from Raycast, that's the "skip admin, go straight to deep dive" path.

# Common pointers for Bolt + Supabase questions

- **Staging vs production environment** → point at **Supabase project branching**. Separation tooling lives on the Supabase side, not inside Bolt.
- **Prompt-size guidance for large projects** → working ceiling is ~200K tokens per prompt; batches of 5–10 steps, verify each batch before sending the next, revert to snapshot rather than fix-forward when drift appears.

# Agent picker change (mid-May 2026)

Bolt replaced the individual Anthropic model picker with two agent modes: **Standard** and **Max**.
- Free users on Standard: Haiku + Sonnet OR an OSS experiment.
- Paid users on Standard: Sonnet 4.6.
- Paid users on Max: Opus (don't volunteer the version number to customers; if they ask about model drops, frame as "we pick the best model for the task — if you see a performance drop, let's investigate").
- Docs: https://support.bolt.new/building/using-bolt/agents#agents
- Customers reporting *"can't use Claude agent"* or *"the Anthropic model is gone"* are usually confused by this change. Direct them to the docs and explain Max ≈ the old high-end model.

# Check my Raycast scripts before building new automations

I maintain a script library at `~/Documents/Raycast-scripts/`. Authoritative docs in that dir:
- `README.md` — live catalog of every script.
- `SETUP.md` — onboarding guide for teammates.
- `BOLT_FLOWS.md` — quick reference table of support flows keyed to script names (if present in this clone).

If you're about to write a script for something, grep the catalog first — odds are something exists to extend.

**Clipboard-driven chaining.** Raycast scripts pass the active UserID through the clipboard so they chain (admin lookup → copy ID → User Admin Actions → Reset Tokens). When you write something new in this style, keep the convention: read from clipboard, write the result back to clipboard.

# Gotchas

- **Browser AppleScript permission.** Scripts that read the active tab need Chrome's "Allow JavaScript from Apple Events" (Chrome Settings → Privacy & Security → Site Settings → Additional permissions). Without it they fail silently. Enable for both `stackblitz.com` and `bolt.new`.
- **ID ambiguity in `bolt.new/admin`.** Some admin pages accept both user ID and project ID as filters but default to one. Scripts default to project ID; if results look wrong, the filter param name is probably the issue.

# Slack channels

- **#bolt-bugs** — bug reports. Filed with the `/bug` Slack command. Form fields: **Reporter** (full name), **Description of the issue**, **Steps to reproduce the issue**, **B2C or B2B** (select), **Customer impact** (if urgent → create an incident instead, don't file a bug), **Project ID(s) and/or error message ID(s)**, **Front id/link** (optional). When you help prepare a bug, structure the content to drop straight into these fields.
- **#bolt-eng-support** — where CX asks engineering for help on specific issues.
- **#cx-team** — questions or new findings shared with the CX team.
- **#cx-core** — private CX-team channel for announcements not meant for the wider company. Treat anything destined for here as internal-confidential.

# Team naming

- [EXAMPLE: Dawid Matuszczyk goes by "Dex". Same person — Front shows `dawid@`, Slack shows `@Dex`.] Add other name-conflicts as you encounter them so I correlate the right person across tools.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

Custom Raycast commands to speed up common support/admin flows (StackBlitz admin, Bolt rate limits, token resets) and a few utilities.

**New to this stack?** See [SETUP.md](SETUP.md) for the end-to-end CX workstation bootstrap (Front + admin chat + CX agent escalation, plus the recommended `~/.claude/CLAUDE.md` calibration).

## Prerequisites

- macOS with Raycast installed
Expand Down
Loading