Agent skill

Customer Story Setup

by langfuse in langfuse/langfuse-docs

Converts draft customer-story Markdown into Langfuse website MDX (Fumadocs), collects missing metadata and assets, wires meta.json and authors.

MITAuto-check passedWriting & Content

Install Customer Story Setup

skills CLI
$ npx skills add langfuse/langfuse-docs --skill customer-story-setup -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install langfuse/langfuse-docs customer-story-setup --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/langfuse/langfuse-docs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/customer-story-setup .claude/skills/customer-story-setup && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
customer-story-setup
GitHub stars
247
Token cost
~2.4k tokens
SKILL.md length
731 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Converts draft customer-story Markdown into Langfuse website MDX (Fumadocs), collects missing metadata and assets, wires meta.json and authors.

  • Works in 4 steps: Folder: public/images/customers// → For each asset: filename, purpose, where… → Remind: customer posts use around… → …
  • Converting a customer case study
  • SKILL.md covers Before writing any file:…, MDX structure to produce, Repo wiring (after MDX exists) and Checklist before finishing, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Customer Story Setup is an agent skill from langfuse/langfuse-docs. Converts draft customer-story Markdown into Langfuse website MDX (Fumadocs), collects missing metadata and assets, wires meta.json and authors. Use when adding or converting a customer case study, user story, or /users page, or when the user mentions customer story setup, cresta/canva-style posts, or CustomerStoryCTA/BlogHeader for customers.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Storytelling, Markdown and LLM observability. It works with Langfuse and Canva. The repository describes itself as: 🪢 Open source agent evals & observability: Trace, evaluate, and improve LLM applications with one open platform. The licence is MIT.

When your agent uses it

  • Converting a customer case study
  • The user mentions customer story setup
  • Cresta/canva-style posts
  • CustomerStoryCTA/BlogHeader for customers

Example prompts

  • “Use the customer-story-setup skill to convert draft customer-story Markdown into Langfuse website MDX (Fumadocs), collects missing metadata and…”
  • “/customer-story-setup”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Folder: public/images/customers//
  2. For each asset: filename, purpose, where it appears (section + suggested alt text)
  3. Remind: customer posts use around markdown images, e.g. Alt` per site conventions
  4. Size each image by aspect ratio (run sips -g pixelWidth -g pixelHeight to get dimensions)

What it can do on your machine

Read from SKILL.md and the folder at commit 4c9f1f5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Customer Story Setup loads about 2.4k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 731 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from langfuse/langfuse-docs at commit 4c9f1f5, republished under its MIT licence (© langfuse). 731 words, ~2,392 tokens.

Download SKILL.mdSave it as .claude/skills/customer-story-setup/SKILL.md (or your agent's skills folder).
name
customer-story-setup
description
Converts draft customer-story Markdown into Langfuse website MDX (Fumadocs), collects missing metadata and assets, wires meta.json and authors. Use when adding or converting a customer case study, user story, or /users page, or when the user mentions customer story setup, cresta/canva-style posts, or CustomerStoryCTA/BlogHeader for customers.

Single source of truth: maintain this skill under .agents/skills/customer-story-setup/ only. Claude and Cursor load projected copies under .claude/skills/customer-story-setup and .cursor/skills/customer-story-setup.

Customer story setup (MD -> MDX)

Turns a plain Markdown draft into content/customers/<slug>.mdx in the same pattern as content/customers/canva.mdx and cresta.mdx.

Before writing any file: collect missing input

Do not guess. If any item below is missing from the user's draft or message, ask explicitly and wait for answers (or confirm defaults).

Content & publishing
TopicAsk
Company nameLegal/marketing name for copy and quotes
Company websitePublic URL for the [Company](https://...) link in About <Company>
SlugFilename: <slug>.mdx (lowercase, hyphens), e.g. cresta -> cresta.mdx
Page titleH1 string for BlogHeader + YAML title (often "How <Company> ... with Langfuse")
Short descriptionYAML description + BlogHeader description (SEO/social; 1-2 sentences)
Publish dateYAML date + BlogHeader date (e.g. March 26, 2026)
OG imageOptional ogImage: path; if unset, leave empty like other stories
Authors (BlogHeader authors={["..."]})
TopicAsk
Byline author(s)Who should appear under the title (keys from data/authors.json)
External / guest speakerIf not in authors.json: collect name, title, optional socials, and headshot path under public/images/people/ or public/images/customers/<slug>/, then add an entry to data/authors.json (see existing entries). Every authors key must resolve in authors.json.
Branding & Users index card
TopicAsk
LogosPaths for customerLogo and customerLogoDark (light + dark mode), usually under public/images/customers/<slug>/
Pull quotecustomerQuote (short, for grid card)
Quote attributionquoteAuthor, quoteRole, quoteCompany
Speaker headshot (optional)quoteAuthorImage for card/SEO if you use the same as Canva
Show on /usersshowInCustomerIndex: true | false
Images (screenshots & diagrams)

Produce a numbered checklist for the user (and keep it in the PR description if useful):

  1. Folder: public/images/customers/<slug>/
  2. For each asset: filename, purpose, where it appears (section + suggested alt text)
  3. Remind: customer posts use <Frame fullWidth> around markdown images, e.g. ![Alt](mdc:/images/customers/<slug>/file.png) per site conventions
  4. Size each image by aspect ratio (run sips -g pixelWidth -g pixelHeight <file> to get dimensions):
    • Portrait / square (ratio <= 1:1) -> <div className="flex justify-center"><Frame fullWidth className="w-1/2">...</Frame></div>
    • Landscape (~1.5:1) -> <div className="flex justify-center"><Frame fullWidth className="w-2/3">...</Frame></div>
    • Panoramic (> 2:1) -> <Frame fullWidth className="w-full">...</Frame> (no centering wrapper needed)

If the draft says "screenshot here" without files, list placeholders in MDX with consistent paths so the user can drop files in later.

Ask whether to add sparse internal links. Default policy: only link major product concepts (match what we used on Cresta):

Do not pepper every noun with links. Use paths from llms-docs.txt / available-internal-links rule so links resolve.


Show full SKILL.md (315 more words)Show less

MDX structure to produce

  1. YAML frontmatter at top: title, date, description, ogImage, tag: customer-story, author (display string if needed), customerLogo, customerLogoDark, optional quote fields, showInCustomerIndex.
  2. Imports: BlogHeader, CustomerQuote (if quote), ImpactChart (if impact section), CustomerStoryCTA; use Frame for images (global in MDX).
  3. BlogHeader: title, description, customerLogo, authors, date; optional image for hero.
  4. Body headings: One conceptual H1 only (from BlogHeader). Body uses ## and ###; do not skip levels.
  5. Quote block: <CustomerQuote quote="..." name="..." role="..." company="..." />
    • align role / company with frontmatter so the byline reads "Name, Role at Company"
    • avoid duplicating company name in role
  6. Images: size by aspect ratio (see checklist item 4 under Images above)
    • portrait/square -> w-1/2 centered
    • landscape -> w-2/3 centered
    • panoramic -> w-full
  7. Closing: <ImpactChart items={[{ area, impact }, ...]} /> (optional) then <CustomerStoryCTA />.

Reference implementations: content/customers/canva.mdx, content/customers/cresta.mdx.


Repo wiring (after MDX exists)

  1. content/customers/meta.json

    • Add "<slug>" to the pages array (with "index" first).
    • Order matters for layout: the Users grid and homepage carousel are sorted by sortCustomerStoriesByMetaOrder in lib/sortCustomerStoriesByMeta.ts, which reads this list. Place the slug where the card should appear (e.g. last in the list = bottom-right in a 2-column grid).
  2. Authors

    • If new author: add to data/authors.json (key must match BlogHeader authors).
  3. Assets

    • Logos and story images under public/images/customers/<slug>/.
  4. Users / adopters list

    • After the story exists, add or update the company in the adopters table with add-customer-to-user-list so the Reference cell is [User Story](/users/<slug>).

Checklist before finishing

  • All required fields collected from user (or documented as TBD)
  • authors keys exist in data/authors.json
  • meta.json includes slug in desired order
  • Image checklist given to user with folder path
  • Company website link in About section
  • Docs links only where agreed; no broken internal URLs
  • Replace all em dashes with regular hyphens (-) - the linter will do this anyway; better to do it upfront
  • Follow AGENTS.md / documentation-pages.mdc: one H1 via BlogHeader, American English, accessible alt text

Quick YAML skeleton (adapt fields)

yaml
---
title: "..."
date: ...
description: ...
ogImage:
tag: customer-story
author: ...
customerLogo: "/images/customers/<slug>/...-light.png"
customerLogoDark: "/images/customers/<slug>/...-dark.png"
customerQuote: "..."
quoteAuthor: "..."
quoteRole: "..."
quoteCompany: "..."
showInCustomerIndex: true
---

© langfuse, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/customer-story-setup of langfuse/langfuse-docs.

Open the folder on GitHubat commit 4c9f1f5

Compare with similar skills

Customer Story Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Customer Story Setup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Customer Story Setup this skilllangfuse/langfuse-docs247—~2.4kAutomated safety check: PassMIT
Notion To Blogwasp-lang/wasp19k—~922Automated safety check: PassMIT
AI Daily Newsgeekjourneyx/ai-daily-skill235—~2.3kAutomated safety check: PassNone
Insight Error Pagevercel/next.js143k—~5.5kAutomated safety check: PassMIT
Content Humanizerdigoal/blog8.6k—~1.2kAutomated safety check: PassGPL-2.0
Blog AnalyzeAgriciDaniel/claude-blog2.3k1 repos~3.5kAutomated safety check: PassMIT

Similar skills

  • Notion To Blog

    wasp-lang/wasp

    Transfer a blog post from Notion to the Wasp blog. An agent skill from wasp-lang/wasp.

    19k GitHub stars~922 tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • AI Daily News

    geekjourneyx/ai-daily-skill

    Fetches AI news from smol.ai RSS and generates structured markdown with intelligent summarization and categorization.

    235 GitHub stars~2.3k tokensUpdated today
    Writing & ContentAuto-check passed
  • Insight Error Page

    vercel/next.js

    Official

    Write or audit an insight-kind error page for the Next.js dev overlay.

    143k GitHub stars~5.5k tokensUpdated today
    Writing & ContentAuto-check passed
  • 分析一段内容或一个文件的"人味"(即像不像人类自然写出来的,AI 生成痕迹有多重),给出 0-100 量化打分,并在低于目标线(默认 80 分,用户可指定其他数值如90分)时在不改变原意的前提下改写到目标分数以上。触发条件:用户提到"人味"、"AI味"、"AI感"、"降AI率"、"去AI化"、"人性化改写"、"像人写的"、"过人工检测"、"过AI检测"、"让文章更自然"、"这段话是不是AI写的"…

    8.6k GitHub stars~1.2k tokensUpdated today
    Writing & ContentAuto-check passed
  • Blog Analyze

    AgriciDaniel/claude-blog

    Audit and score blog posts on a 5-category 100-point scoring system covering content quality, SEO optimization, E-E-A-T signals, technical elements, and AI citation readiness.

    2.3k GitHub starsUsed in 1 repo~3.5k tokens
    Writing & ContentAuto-check passed
  • Proofread Markdown

    cfug/dart.cn

    Proofreads Markdown files against Google guidelines. An agent skill from cfug/dart.cn.

    103 GitHub stars~345 tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed

More from langfuse/langfuse-docs

  • Langfuse Integration Page

    langfuse/langfuse-docs

    Create a new Langfuse integration page in the langfuse-docs repo.

    247 GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Add Customer To User List

    langfuse/langfuse-docs

    Add or update a company in the Langfuse /users adopters table.

    247 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Add Yourself To Team Langfuse

    langfuse/langfuse-docs

    Add a new team member to Langfuse's canonical team data and shared team table.

    247 GitHub stars~548 tokensUpdated today
    Auto-check passed

Works with

Questions about Customer Story Setup

What does Customer Story Setup do?

Converts draft customer-story Markdown into Langfuse website MDX (Fumadocs), collects missing metadata and assets, wires meta.json and authors. Customer Story Setup is an agent skill from langfuse/langfuse-docs.json and authors.

When should I use Customer Story Setup?

Customer Story Setup fits situations like: converting a customer case study; the user mentions customer story setup; cresta/canva-style posts; customerStoryCTA/BlogHeader for customers.

How do I install Customer Story Setup in Claude Code?

Run `npx skills add langfuse/langfuse-docs --skill customer-story-setup -a claude-code`. Or copy the skill folder (.agents/skills/customer-story-setup in langfuse/langfuse-docs) into .claude/skills/customer-story-setup in your project. Claude Code loads it when a task matches its description.

How do I install Customer Story Setup in Codex?

Run `npx skills add langfuse/langfuse-docs --skill customer-story-setup -a codex`. Or copy the skill folder (.agents/skills/customer-story-setup in langfuse/langfuse-docs) into .agents/skills/customer-story-setup in your project. Codex loads it when a task matches its description.

Can I use Customer Story Setup in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add langfuse/langfuse-docs --skill customer-story-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/customer-story-setup, .gemini/skills/customer-story-setup, .github/skills/customer-story-setup and .opencode/skills/customer-story-setup in your project.

What does Customer Story Setup need to run?

SKILL.md names no scripts, command-line tools or credentials: Customer Story Setup is instructions for the agent only.

Does Customer Story Setup access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Customer Story Setup safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Customer Story Setup use?

Customer Story Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Customer Story Setup use?

About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Customer Story Setup?

Skills that share tags, products or a category with Customer Story Setup: Notion To Blog (wasp-lang/wasp, 19k stars), AI Daily News (geekjourneyx/ai-daily-skill, 235 stars), Insight Error Page (vercel/next.js, 143k stars) and Content Humanizer (digoal/blog, 8.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Customer Story Setup?

langfuse (a GitHub organization) maintains it in langfuse/langfuse-docs, which has 247 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 9, 2026.

Source: langfuse/langfuse-docs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.