Claude Code skill

A Claude Code skill is a Markdown file that tells Claude Code what a tool does, when to use it, and how to call it. When you add a ListBee skill to your project, Claude Code can create listings, check orders, and manage your account — without you having to explain the API each time.

Skill location.claude/skills/listbee/SKILL.md (project) or ~/.claude/skills/listbee/SKILL.md (global)
AuthLISTBEE_API_KEY environment variable
Triggers”sell something”, “create a listing”, “check orders”, “update listing”

What a skill does

Claude Code reads skill files from .claude/skills/ in your project root. When you ask Claude Code to do something that matches the skill’s trigger conditions, it follows the instructions in the skill file — including which API to call, what parameters to use, and how to handle errors.

Without a skill file, Claude Code might attempt to use a generic HTTP approach or ask you for guidance. With a skill file, it knows exactly what to do.


Setup

Create the skill directory and file:

$mkdir -p .claude/skills/listbee
$touch .claude/skills/listbee/SKILL.md

Add your API key to the environment:

$export LISTBEE_API_KEY=lb_...

Or add it to a .env file that your project loads:

$LISTBEE_API_KEY=lb_...

Skill file content

Create .claude/skills/listbee/SKILL.md with the following content:

1# ListBee
2
3Use the ListBee API to create and manage digital product listings.
4
5## When to use
6
7Use this skill when the user:
8- Asks to sell something, create a product, or monetize content
9- Wants to create a listing, set a price, or share a buy link
10- Asks about orders, buyers, or payment status
11- Wants to update or delete an existing listing
12
13## Auth
14
15All requests use:
16```
17Authorization: Bearer $LISTBEE_API_KEY
18```
19
20Get the key from `LISTBEE_API_KEY` in the environment.
21
22## Base URL
23
24`https://api.listbee.so`
25
26## Core operations
27
28### Create a listing
29
30```python
31import httpx, os
32
33resp = httpx.post(
34 "https://api.listbee.so/v1/listings",
35 headers={"Authorization": f"Bearer {os.environ['LISTBEE_API_KEY']}"},
36 json={
37 "name": "<product name>",
38 "price": <price in cents>,
39 "deliverable": "<URL or text payload>",
40 },
41)
42listing = resp.json()
43print(listing["url"]) # share this with buyers
44```
45
46### List listings
47
48```python
49resp = httpx.get(
50 "https://api.listbee.so/v1/listings",
51 headers={"Authorization": f"Bearer {os.environ['LISTBEE_API_KEY']}"},
52)
53listings = resp.json()["data"]
54```
55
56### Get a listing
57
58```python
59resp = httpx.get(
60 "https://api.listbee.so/v1/listings/{slug}",
61 headers={"Authorization": f"Bearer {os.environ['LISTBEE_API_KEY']}"},
62)
63listing = resp.json()
64```
65
66### Update a listing
67
68```python
69resp = httpx.put(
70 "https://api.listbee.so/v1/listings/{slug}",
71 headers={"Authorization": f"Bearer {os.environ['LISTBEE_API_KEY']}"},
72 json={"price": 2900}, # any fields to update
73)
74```
75
76### Delete a listing
77
78```python
79httpx.delete(
80 "https://api.listbee.so/v1/listings/{slug}",
81 headers={"Authorization": f"Bearer {os.environ['LISTBEE_API_KEY']}"},
82)
83```
84
85### List orders
86
87```python
88resp = httpx.get(
89 "https://api.listbee.so/v1/orders",
90 headers={"Authorization": f"Bearer {os.environ['LISTBEE_API_KEY']}"},
91)
92orders = resp.json()["data"]
93```
94
95## Readiness
96
97Every listing response includes `readiness`:
98- `readiness.sellable: true` → buyers can purchase now
99- `readiness.sellable: false` → check `readiness.actions` for what's blocking
100- `readiness.next` → code of the highest-priority action
101
102If `sellable` is false, surface `readiness.actions[0].message` to the user.
103
104## Errors
105
106Errors use RFC 9457 format:
107```json
108{ "type": "...", "title": "...", "status": 422, "detail": "...", "code": "...", "param": "..." }
109```
110
111Common status codes: 401 (invalid key), 404 (not found), 422 (validation error), 429 (rate limit).
112
113## Key facts
114
115- Price is always in cents: $19.00 = `1900`
116- Listings are looked up by `slug`, not `id`
117- `deliverable` can be a URL (file delivered to buyer) or raw text
118- `listing.url` is the product page — share it with buyers
119- ID prefixes: `lst_` listing, `ord_` order, `acc_` account

How it triggers

Claude Code loads skill files when a conversation starts. The skill is active for all tasks in that session.

Example prompts that will trigger the ListBee skill:

  • “Create a listing for my ebook, $12, here’s the PDF link”
  • “I want to sell my course notes”
  • “What orders have come in today?”
  • “Update the price on my Python guide to $25”
  • “Delete the old listing”

Claude Code reads the skill, picks the right operation, and executes it — including running the Python code if needed.


Shared skills

If you work across multiple projects and want the skill available everywhere, place it in the workspace-level skills directory:

$mkdir -p ~/.claude/skills/listbee
$# add SKILL.md there

Skills in ~/.claude/skills/ are loaded in all Claude Code sessions regardless of project.


Common errors

ErrorCauseResolution
Skill not triggeringSkill file not in .claude/skills/ or wrong filenameVerify path is .claude/skills/listbee/SKILL.md (case-sensitive)
LISTBEE_API_KEY not foundEnvironment variable not set in shell or .envAdd export LISTBEE_API_KEY=lb_... to shell profile or project .env
authentication_requiredAPI key is invalidVerify the key starts with lb_ and is active
Claude uses generic HTTP instead of skillPrompt didn’t match skill trigger wordsUse keywords like “listing”, “sell”, “product”, or “order”

Limitations

  • No MCP tool calling — the skill instructs Claude Code to run Python/httpx code directly. It does not use MCP tools.
  • No webhook management — the skill covers listings, orders, and account operations. Webhook CRUD is not included.
  • Python-only examples — the skill’s code blocks use Python with httpx. Claude Code may adapt to TypeScript if asked, but the skill doesn’t include TypeScript examples.

Next steps

  • MCP server — an alternative integration using MCP tools instead of a skill file.
  • API reference — every endpoint, every parameter.

Copy for AI assistants

1# ListBee — Claude Code skill
2#
3# Skill file location: .claude/skills/listbee/SKILL.md
4# (or ~/.claude/skills/listbee/SKILL.md for global)
5#
6# Triggers when user asks to:
7# - sell something / create a product / monetize content
8# - create a listing / set a price / share a buy link
9# - check orders / view buyers / check payment status
10# - update or delete a listing
11#
12# Auth: LISTBEE_API_KEY env var → Authorization: Bearer lb_...
13#
14# Core endpoints:
15# POST /v1/listings create listing
16# GET /v1/listings list listings
17# GET /v1/listings/{slug} get listing
18# PUT /v1/listings/{slug} update listing
19# DELETE /v1/listings/{slug} delete listing
20# GET /v1/orders list orders
21# GET /v1/orders/{id} get order
22#
23# After creating: check listing.readiness.sellable
24# If false: surface listing.readiness.actions[0].message to user
25#
26# Docs: https://docs.listbee.so