---
title: Claude Code skill
slug: claude-code-skill
eyebrow: Tools
nav_group: Tools
nav_label: Claude Code skill
nav_order: 145
nav_expanded: true
---

# Claude Code skill

An official skill that lets you query the API from [Claude Code](https://claude.com/claude-code) in plain language. It packages the full v2 reference — endpoints, parameters, filters, credit costs and error codes — so the assistant builds the request, sends your credentials, and returns the result as a table.

The skill is a set of instruction files, not a client library: there is no package to import, no server to run, and no code to maintain. It issues the same authenticated `GET` requests documented in this reference, and reports the credit cost of each one.

## Install {#skill-install}

Requires Claude Code on your own machine (CLI, desktop app, or IDE extension). It does not run in the claude.ai web or mobile chat.

```endpoint
ZIP https://cdn.escharts.com/media/skills/streamscharts-api.zip
```

```shell INSTALL
curl -O https://cdn.escharts.com/media/skills/streamscharts-api.zip
unzip streamscharts-api.zip
mv streamscharts-api ~/.claude/skills/
```

Use `.claude/skills/` inside a project to install it for that project only. Restart Claude Code after copying the folder; the skill loads automatically when a question needs it, or on demand with `/streamscharts-api`.

## Authentication {#skill-auth}

The skill uses the same [Client ID and Token](/api/docs/authentication) as any other client. Export them before starting a session, or let the skill prompt you for them once. Credentials stay in your local shell session — they are never written to disk or sent anywhere except `streamscharts.com`.

```shell ENVIRONMENT
export SC_ID='XXXXXXXXXXXX'
export SC_TOKEN='YYYYYYYYYYYYYY'
```

> [!WARNING] Quote the Token
> Tokens contain `$` characters, which most shells expand inside double quotes. Use single quotes, or the request fails with `401 invalid_credentials`.

## Usage {#skill-usage}

Ask for the data you need. The skill resolves the question to an endpoint, a platform and a time period, then formats the response.

| Request in plain language | Endpoint used | Cost / request |
| --- | --- | --- |
| xQc’s Kick stats for the last 30 days | `/channels/{name}` | 1 |
| Top 20 Twitch channels by peak viewers this month | `/channels` | 5 |
| Channels live on Twitch and Kick playing Rocket League | `/live/channels` | 10 |
| League of Legends hours watched on Twitch, last 90 days | `/games/{slug}` | 1 |
| Chat engagement on a specific YouTube broadcast | `/streams-extra/{id}/chat` | 1 |
| Twitch channels ranked by paid subscribers in Brazil | `/subscribers` | 10 |
| Every chat message from last night’s broadcast | `/streams-extra/{id}/chat-logs` | 1 |
| A broadcast’s viewer curve, 5 minutes at a time | `/streams-extra/{id}/intervals` | 3 |
| Top 100 Twitch channels with emails and socials | `/channels?business_contacts=true` | 5 |
| Top 100 Twitch channels, last 7 days | `/channels?platform=twitch&time=7-days` | 0 |

The contacts row carries the usual dynamic surcharge on top of the list price — 1 credit per channel that has an email or a social account, see [business contacts](/api/docs/lists#list-emails).

Follow-up questions reuse the context of the previous answer, so you can narrow a list, switch platform, or drill into a single broadcast without restating the query.

## Credit reporting {#skill-credits}

Each answer ends with the cost of the request and the balance returned in the response headers. Before a paginated list, a live snapshot, or a batch of calls, the skill states the total cost and waits for confirmation.

```markdown OUTPUT
## Top 5 Twitch channels by hours watched, last 7 days — StreamsCharts.com

| # | Channel  | Hours watched | Peak viewers | Avg viewers |
|---|----------|---------------|--------------|-------------|
| 1 | kaicenat | 12,481,930    | 330,412      | 84,205      |
| 2 | ibai     |  8,204,551    | 156,880      | 61,338      |
…

> Data: StreamsCharts.com · This request: 5 credits · Balance: 1,479 credits
```

To evaluate the skill without spending credits, start with the [free request](/api/docs/lists#list-free), or ask for any endpoint with [`testing_mode=true`](/api/docs/testing).

## Coverage {#skill-coverage}

| Area | Included |
| --- | --- |
| [Channels](/api/docs/channels) | Standard stats, extra metrics, paid subscribers, chat, joint audience (geography + demographics) |
| [Streams](/api/docs/streams) | Standard stats, extra metrics, all stream games, paid subscribers, chat analytics, chat logs |
| [Games](/api/docs/games) | Single game stats, ranked game lists, publisher filter |
| [Lists](/api/docs/lists) | Channel discovery with every documented filter, top by subscribers, top by bits, business contacts |
| [Live](/api/docs/live) | Live channels list, multi-platform queries, snapshot pagination |
| [Reference data](/api/docs/requests) | All 9 active and 4 discontinued platforms, time periods, per-platform field availability |

## Notes {#skill-notes}

- **Read-only.** The skill issues `GET` requests only and cannot modify your account.

- **Rate limit.** 60 requests per minute. The skill reads `x-ratelimit-remaining` and paces itself; `testing_mode` requests are exempt.

- **YouTube.** Channel IDs are used in the path, as described in [Making requests](/api/docs/requests).

- **Other agents.** If you use a different assistant or build your own integration, [llms.txt](/api/llms.txt) provides the same reference in a model-readable format.