Single source of truth: maintain this skill under
.agents/skills/add-customer-to-user-list/only. Claude and Cursor load projected copies under.claude/skills/add-customer-to-user-listand.cursor/skills/add-customer-to-user-list.
Add a customer to the users list
Adds or updates one row in the public adopters table on /users.
Do not write a customer story in this skill. If the user wants a full
/users/<slug> case study, use
customer-story-setup first, then come
back here to link it.
Canonical file
| What | Where |
|---|---|
| Adopters table (source of truth) | components-mdx/adopters-table.mdx |
| Rendered on | /users (content/customers/index.mdx) and the handbook customers chapter |
The handbook imports the same table (<AdoptersTable />). Editing the MDX
file updates both pages. Do not duplicate the table elsewhere.
Before writing any file
Collect what you can from the request. Ask only for what is still missing:
- Company name — public marketing name
- Company website — used in the Company column
- Use case — optional; write one if a user story or external link exists
- External reference URL — optional public source (blog, job post, DPA, talk)
Then always check for a user story. Do not skip this step.
Always check: is there a user story?
Search the working tree and origin/main (this branch may be behind):
content/customers/meta.json→pages(skip"index")content/customers/*.mdx— match company name, legal name, or obvious slug variants (hugging-facevshuggingface,merckgroupvsmerck)- Frontmatter
showInCustomerIndexandquoteCompanyif the filename is unclear
The public URL is /users/<slug> where <slug> is the MDX filename without
.mdx.
| Result | Reference column (last) | Use case column (middle) |
|---|---|---|
| User story exists | [User Story](/users/<slug>) | Brief summary of how they use Langfuse from the story (or the user's wording if they gave one) |
| No story, external link given | Briefly named link, see below | Brief summary of the Langfuse use case from that source |
| No story, no external link | Langfuse Customer | Short product/industry line if the user gave one; otherwise a concise public description of the company. Do not invent a Langfuse use case. |
Never write Langfuse Customer when a user story exists. Prefer the user
story over an external link when both exist.
External reference links
When the user (or a public source they pointed at) provides a URL and there is no user story:
- Open the page and read enough to understand the Langfuse mention.
- Middle column: one short use-case phrase (sentence case), focused on what they do with Langfuse or their AI product — not a full company bio.
- Last column: a short link label plus the URL, matching existing rows.
Link-label examples already in the table:
Blogpost, Tech Blogpost, AWS Blogpost, LinkedIn Post, Job Description,
Case Study, Client Story, Documentation, Release Notes, Research Paper,
Source Code, Conference Talk, Conference Deck, Privacy Policy,
Data Processing Addendum, Subprocessor List, IT White Paper,
Technical Memorandum, Open Source Catalog, OSS LLMOps Stack,
Partner Newsletter
Pick the closest label. Include a date only when it helps (Blogpost from 12/23/2025).
Always include a Wayback Machine archive when the Reference cell is an
external URL. User-story links (/users/<slug>) and Langfuse Customer do
not need one.
-
Look up an existing
200snapshot. Always percent-encode the URL withcurl -G --data-urlencode(or equivalent). A raw?url=query treats&in the page URL as another CDX parameter and can miss snapshots.bashcurl -sS -G "https://web.archive.org/cdx/search/cdx" \ --data-urlencode "url=<URL>" \ --data-urlencode "output=json" \ --data-urlencode "filter=statuscode:200" \ --data-urlencode "limit=1" -
If CDX is empty, request a snapshot and wait for it. Do not skip this step or ship the row without an archive. Percent-encode reserved characters in the page URL (
?,&,#) so Save Page Now receives the full URL.bashcurl -sS -I "https://web.archive.org/save/$(python3 -c 'import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1], safe=":/"))' '<URL>')"Re-query CDX until it returns a
200row. The Save Page Now response may be5xxeven when a capture is stored — trust CDX plus a fetch of the archive URL. -
Confirm the snapshot contains the Langfuse mention (or the cited source content), then use:
https://web.archive.org/web/<timestamp>/<URL>
md[Tech Blogpost](https://example.com/post) ([Archive](https://web.archive.org/web/20260304001459/https://example.com/post))
If Wayback cannot capture the page after a retry (common for some LinkedIn
or login-walled URLs), use an archive.ph snapshot the same way neighboring
rows do. Say so in the PR. Do not omit the archive.
Row format
Insert alphabetically by company display name (the visible name, not the domain). Update an existing row instead of adding a duplicate.
md| [Company](https://www.example.com/) | Short use-case phrase | Langfuse Customer |
md| [Company](https://www.example.com/) | Short use-case phrase | [User Story](/users/<slug>) |
md| [Company](https://www.example.com/) | Short use-case phrase | [Tech Blogpost](https://example.com/post) ([Archive](https://web.archive.org/web/...)) |
- Company cell: markdown link to the official site. Add a parenthetical only
when the table already does that for subsidiaries (
(Wix),(Toyota Group)). - Use case: sentence case; keep it to one line; American English; no em dashes (use a regular hyphen or an em-dash character only if neighboring rows do).
- Preserve the existing column padding so the table stays aligned.
- One H1 per markdown file already exists in consumers; do not add a
#heading to the table file.
Optional companion updates (only if they already apply)
Do these only when the company is already on that surface, or the user asks:
| Surface | File | When |
|---|---|---|
| Handbook featured bullets | content/handbook/chapters/customers.mdx | Company is in the curated list; add [(Read Story)](/users/<slug>) if a story exists |
| Homepage logo grid | components/shared/EnterpriseLogoGrid.tsx | Logo is already in the grid and a story exists → set customerStoryPath: "/users/<slug>" |
| Wrapped customers | components/wrapped/Customers.tsx | Same: move to companiesWithStories and { type: "story", name: "..." } |
Do not add a homepage logo in this skill. That needs a tight wordmark SVG
(no padding; see components/home/img/AGENTS.md) and is a separate request.
Out of scope
- Creating
content/customers/<slug>.mdxor editingcontent/customers/meta.json→customer-story-setup - Designing or replacing homepage logos
- Inventing public citations or claiming a user story that does not exist
Checklist
- Searched
content/customers/andorigin/mainfor a user story - Reference is
User Story, a described external link, orLangfuse Customer - External reference includes a Wayback
[Archive](...)(requested via Save Page Now if none existed) - Use case is a brief, sourced summary (not a long paragraph)
- Company cell links to the official website
- Row is alphabetical and not a duplicate
- Table column alignment preserved
-
pnpm run formatif you edited Prettier-covered files


