jwt-decode — скилл для Claude Code: разбор JWT без проверки подписи
Раскладывает JWT на заголовок, payload и подпись, показывает claims и сроки. Полезен, когда нужно быстро понять, что внутри токена.
npx skills add jsonwebtoken/jwt-skills --skill jwt-decode -a claude-codeЧто делает jwt-decode
Скилл берёт строку JWT, делит её по точкам на три части и декодирует первые две из base64url в JSON. На выходе — заголовок, payload со всеми claims и сырая строка подписи. Для exp, nbf и iat показывает и Unix-время, и читаемую дату в UTC; если exp уже прошёл, помечает токен как просроченный и указывает, насколько давно.
Отдельно прогоняет проверки безопасности. Подпись не проверяется вообще — это работа скилла jwt-validate, поэтому доверять содержимому нельзя. Зато alg: none он подсветит: такой токен не подписан, и подделать его может кто угодно. Ещё обратит внимание на пароли, ключи и персональные данные прямо в claims, на отсутствие exp и на поля jku, jwk, x5u в заголовке.
Если в заголовке стоит cty: JWT, payload окажется вложенным токеном, и скилл разберёт его рекурсивно. При ошибке декодирования сообщит, что именно сломалось: битый base64, невалидный JSON или не то число сегментов. Ставить есть смысл, когда вы регулярно ковыряете токены руками — но помните, что этот скилл показывает содержимое и ничего не говорит о подлинности.
Какие задачи решает
- посмотреть, какие claims лежат внутри токена
- проверить, не истёк ли срок действия
exp - найти пароли и ключи, случайно попавшие в payload
- распознать токен с
alg: noneи без подписи - разобрать вложенный JWT из поля
cty
Примеры запросов агенту
- разбери этот JWT и покажи claims
- что внутри этого токена?
- проверь срок действия этого JWT
Как установить jwt-decode
1Через Skills CLI (Vercel)
npx skills add jsonwebtoken/jwt-skills --skill jwt-decode -a claude-code2Вручную: положить файлы
~/.claude/skills/jwt-decode/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/jwt-decode/
1Через Skills CLI (Vercel)
npx skills add jsonwebtoken/jwt-skills --skill jwt-decode -a codex2Вручную: положить файлы
.agents/skills/jwt-decode/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add jsonwebtoken/jwt-skills --skill jwt-decode -a cursor2Вручную: положить файлы
.cursor/skills/jwt-decode/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install jsonwebtoken/jwt-skills jwt-decode2Вручную: положить файлы
.github/skills/jwt-decode/SKILL.md1Через Skills CLI (Vercel)
npx skills add jsonwebtoken/jwt-skills --skill jwt-decode -a gemini-cli2Командой платформы
gemini skills install https://github.com/jsonwebtoken/jwt-skills --path jwt-decodeВручную: положить файлы
.devin/skills/jwt-decode/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add jsonwebtoken/jwt-skills --skill jwt-decode -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о jwt-decode
Как установить jwt-decode в Claude?
Выполните npx skills add jsonwebtoken/jwt-skills --skill jwt-decode -a claude-code. Скилл окажется в ~/.claude/skills/jwt-decode/SKILL.md.
Что делает jwt-decode?
Декодирует заголовок и payload JWT из base64url и показывает все claims вместе с датами exp, nbf и iat. Подпись не проверяет.
Чем jwt-decode отличается от jwt-validate?
jwt-decode только раскрывает содержимое токена. Проверка подписи и подлинности — задача jwt-validate.
Исходный текст
SKILL.md · Apache-2.0
---
name: jwt-decode
description: Decode and inspect JSON Web Tokens (JWTs) without verification. Use when the user provides a JWT string and wants to see its header, payload, or claims — e.g. "decode this JWT", "what's in this token", "inspect this JWT", "show me the claims", "parse this token". Also triggers on raw JWT strings (three base64url segments separated by dots).
---
# JWT Decode
Decode a JWT by base64url-decoding its header and payload. Does NOT verify signatures — use `jwt-validate` for that.
## Steps
1. Split the token on `.` into three parts (header, payload, signature).
2. Base64url-decode and parse parts 1 and 2 as JSON.
3. Display header, payload (with all claims), and the raw signature string.
4. For `exp`, `nbf`, `iat` — show both the Unix timestamp and human-readable UTC. If `exp` is past, note **expired** and by how long.
5. Run security checks (see below).
## Output Format
```
## Header
{ "alg": "RS256", "typ": "JWT", "kid": "abc123" }
## Payload
{ "iss": "https://auth.example.com/", "sub": "user|12345", "exp": 1735689600 }
exp: 2025-01-01T00:00:00Z — EXPIRED (3 months ago)
iat: 2024-12-31T00:00:00Z
## Signature
Algorithm: RS256 | Signature: [base64url string]
(Not verified — use jwt-validate to verify)
```
## Security Checks
Flag these prominently when found:
- **`alg: none`** — Token is unsigned. Warn: "This token has no signature and cannot be trusted. Any party could have created or modified it." This is a known attack vector (CVE-2015-9235) where attackers strip signatures to bypass verification.
- **Sensitive data in payload** — JWTs are encoded, not encrypted. Warn if you spot passwords, secrets, API keys, or PII in claims.
- **Missing `exp`** — Token never expires. Flag as a security risk.
- **`jku`/`jwk`/`x5u` in header** — These can be used to trick verifiers into fetching attacker-controlled keys. Flag if present.
## Notes
- If `cty` header is "JWT", the payload is a nested JWT — decode recursively.
- On decode failure, report the specific error (malformed base64, invalid JSON, wrong segment count).
- This skill only reveals token contents — it says nothing about authenticity. Direct users to `jwt-validate` for verification.
---
© jsonwebtoken · Apache-2.0 · jsonwebtoken/jwt-skills