Анализатор JS
xrip/claude-skill-analyze-jsClaude Code скилл для статического анализа JavaScript-файлов: находит API-эндпоинты, URL, секреты, email и ссылки на файлы. Поддерживает TOON-формат вывода (на 50% компактнее JSON), оптимизированный для LLM. Запускается командой /analyze-js.
Установка
npx js-analyzer-cli <files>README
JS Analyzer — Claude Code Skill
🤖 Claude Code скилл для статического анализа JavaScript — обнаруживает эндпоинты, URL, секреты и проблемы безопасности с поддержкой TOON-формата для эффективного потребления LLM.
Основное использование: Claude Code скилл через команду /analyze-js
Дополнительное использование: Автономный CLI-инструмент через npx js-analyzer-cli
Содержание
- Быстрый старт с Claude Code
- Что такое Claude Code Skill?
- Возможности
- Использование как Claude Skill
- Автономное использование CLI
- Что обнаруживается
- Определение бандлера
- Фильтрация шума
- Замечание по безопасности
- Архитектура
- Участие в разработке
- Лицензия
Быстрый старт с Claude Code
Самый простой способ использовать инструмент — как Claude Code скилл:
- В любой директории проекта с установленным скиллом:
User: analyze-js bundle.js
User: analyze-js src/ dist/
User: analyze-js --verbose frontend/
- Claude автоматически:
- Запускает анализатор
- Разбирает результаты TOON/JSON
- Выделяет критические находки (секреты, admin-эндпоинты)
- Предоставляет выводы по безопасности
- Показывает точные местоположения (
file:line:column)
Вот и всё! Установка не нужна, если используете в этом проекте.
Что такое Claude Code Skill?
Claude Code скиллы — это переиспользуемые команды, которые можно вызывать прямо в диалоге с Claude. Этот проект предоставляет скилл analyze-js, делающий анализ безопасности JavaScript бесшовным и контекстно-зависимым.
Преимущества:
- ✅ Интерфейс на естественном языке — просто скажите «проанализируй этот бандл»
- ✅ Автоматическая интерпретация — Claude понимает находки и предоставляет выводы
- ✅ Контекстная осведомлённость — сочетается с другими возможностями Claude (загрузки, отчёты и т.д.)
- ✅ Не нужно запоминать команды — не нужно помнить флаги CLI
Возможности
- Обнаружение API-эндпоинтов: REST API, GraphQL, OAuth-пути, панели администратора, чувствительные пути
- Извлечение URL: HTTP/HTTPS/WebSocket URL, облачное хранилище (S3, Azure Blob, GCS)
- Обнаружение секретов: AWS-ключи, Google API-ключи, Stripe-токены, GitHub-токены, JWT, приватные ключи, учётные данные баз данных
- Поиск email: действительные email-адреса (фильтрует тестовые/placeholder-адреса)
- Ссылки на файлы: чувствительные файлы (
.env,.key,.pem, конфиги, резервные копии, сертификаты) - Определение бандлера: идентифицирует бандлеры и их версии (Webpack, Vite, Rollup, Parcel, esbuild, Browserify, Turbopack, SWC, Metro и другие)
- Фильтрация шума: удаляет артефакты сборки, импорты модулей, XML-пространства имён и другие ложные срабатывания
- Дедупликация: отслеживает уже встреченные значения в нескольких файлах
- TOON-формат: вывод по умолчанию, оптимизированный для LLM (на 50% меньше JSON)
Использование как Claude Skill
Установка как скилла
Вариант 1: Использование в этом проекте (без установки)
Скилл автоматически доступен, когда вы находитесь в директории этого проекта. Claude Code обнаруживает скиллы из директории .claude/skills/.
Вариант 2: Глобальная установка для использования в любом месте
# 1. Установите CLI-инструмент глобально
bun install -g js-analyzer-cli
# или: npm install -g js-analyzer-cli
# 2. Скопируйте скилл в ваш проект
mkdir -p .claude/skills/analyze-js
curl -o .claude/skills/analyze-js/SKILL.md \
https://raw.githubusercontent.com/xrip/claude-skill-analyze-js/master/.claude/skills/analyze-js/SKILL.md
# 3. Обновите SKILL.md для использования глобальной команды
# Замените: bunx --bun js-analyzer-cli
# На: js-analyzerВариант 3: Использование с npx (без установки)
# Скопируйте файл скилла
mkdir -p .claude/skills/analyze-js
curl -o .claude/skills/analyze-js/SKILL.md \
https://raw.githubusercontent.com/xrip/claude-skill-analyze-js/master/.claude/skills/analyze-js/SKILL.md
# Скилл будет использовать: npx js-analyzer-cli
# (уже настроено в SKILL.md)Примеры использования
В Claude Code просто используйте скилл естественным образом:
User: analyze-js bundle.js
User: analyze-js src/
User: analyze-js --verbose dist/
User: analyze-js frontend/ backend/
User: analyze-js --format=json app.js
Или на естественном языке:
User: Can you analyze the bundle.js file for security issues?
User: Check dist/ for API endpoints and secrets
User: What bundler is this application using?
Возможности скилла
При вызове скилла Claude:
- Запустит анализатор для указанных файлов/директорий
- Автоматически разберёт результаты (TOON или JSON формат)
- Представит находки в структурированном, читаемом виде
- Выделит критические элементы:
- 🔴 Секреты (AWS-ключи, API-токены, учётные данные)
- ⚠️ Admin-эндпоинты
- 🔧 Информация о бандлере
- 📧 Email-адреса
- 📁 Ссылки на чувствительные файлы
- Предоставит контекст безопасности о найденном и почему это важно
- Покажет точные местоположения в формате
file:line:column(кликабельно в большинстве IDE)
Типичные сценарии
1. Анализ безопасности:
User: I downloaded bundle.js from example.com. Can you analyze it for security issues?
Claude: [Runs analyze-js bundle.js]
Found 23 findings:
- 🔴 2 AWS keys at bundle.js:1247:15 and bundle.js:2891:22
- ⚠️ Admin endpoint /admin/users at bundle.js:234:12
- 12 API endpoints
- Webpack 5.88.2 detected
2. Определение технологий:
User: analyze-js dist/app.js
Claude: Detected build tools:
- Vite 4.3.9
- Rollup 3.26.0 (used by Vite internally)
3. Несколько директорий:
User: analyze-js src/ public/js/
Claude: Scanning 45 files across 2 directories...
Summary: 67 findings
- 34 endpoints
- 12 URLs
- 3 secrets (masked)
- 18 other items
4. Комбинированные рабочие процессы:
User: Download https://example.com/app.js and analyze it for security issues
Claude: [Downloads file, runs analyze-js, provides security report]
Автономное использование CLI
Установка (автономная)
# Через npm
npm install -g js-analyzer-cli
# Через bun
bun install -g js-analyzer-cli
# Без установки через npx
npx js-analyzer-cli [options] <files...>Базовое использование
# Анализ одного файла
js-analyzer bundle.js
# Анализ директории
js-analyzer src/
# Несколько файлов/директорий
js-analyzer src/ dist/ app.js
# Подробный вывод
js-analyzer --verbose bundle.js
# Вывод в JSON
js-analyzer --format=json bundle.js
# Вывод в TOON (по умолчанию, оптимизирован для LLM)
js-analyzer --format=toon bundle.jsФорматы вывода
TOON-формат (по умолчанию) — оптимизирован для LLM, на 50% меньше JSON:
FILE:bundle.js
BUNDLER:webpack@5.88.2
ENDPOINT:/api/users GET
SECRET:aws_key=AKIA****[MASKED]
URL:https://api.example.com
JSON-формат — для программной обработки:
{
"file": "bundle.js",
"findings": [
{"type": "endpoint", "value": "/api/users", "line": 234}
]
}Что обнаруживается
| Категория | Примеры |
|---|---|
| API-эндпоинты | /api/users, /graphql, /oauth/token, /admin/panel |
| URL | https://api.example.com, wss://socket.io, s3://bucket |
| Секреты | AWS-ключи, Google API-ключи, Stripe-токены, JWT, приватные ключи |
user@example.com (исключая тестовые адреса) | |
| Файлы | .env, .pem, config.json, backup.sql, id_rsa |
| Бандлеры | Webpack, Vite, Rollup, Parcel, esbuild, Browserify и другие |
Определение бандлера
Анализатор идентифицирует:
- Webpack (включая версию из комментариев к чанкам)
- Vite (включая версию из метаданных)
- Rollup (часто используется совместно с Vite)
- Parcel (из манифестов бандла)
- esbuild (из комментариев к бандлу)
- Browserify (из паттернов
require) - Turbopack, SWC, Metro (React Native)
- И другие современные инструменты сборки
Фильтрация шума
Анализатор автоматически фильтрует:
- Артефакты сборки и внутренние пути webpack
- Импорты node_modules
- XML/HTML-пространства имён
- Placeholder-значения и тестовые данные
- Дублирующиеся находки в нескольких файлах
- Ложные срабатывания для распространённых паттернов
Замечание по безопасности
⚠️ Этот инструмент предназначен для:
- Анализа собственного кода на предмет случайно раскрытых секретов
- Аудита безопасности с разрешения
- Исследования и образовательных целей
⚠️ Не используйте для:
- Несанкционированного анализа чужих приложений
- Извлечения учётных данных без разрешения
- Любой деятельности, нарушающей законы или условия использования
Обнаруженные секреты маскируются в выводе по умолчанию. Используйте --show-secrets только в безопасной среде.
Архитектура
claude-skill-analyze-js/
├── .claude/
│ └── skills/
│ └── analyze-js/
│ └── SKILL.md # Определение Claude Code скилла
├── src/
│ ├── analyzer.ts # Основная логика анализа
│ ├── detectors/
│ │ ├── endpoints.ts # Обнаружение API-эндпоинтов
│ │ ├── secrets.ts # Обнаружение секретов
│ │ ├── urls.ts # Извлечение URL
│ │ ├── emails.ts # Поиск email
│ │ ├── files.ts # Ссылки на файлы
│ │ └── bundlers.ts # Определение бандлера
│ ├── formatters/
│ │ ├── toon.ts # TOON-форматтер
│ │ └── json.ts # JSON-форматтер
│ └── cli.ts # Точка входа CLI
├── package.json
└── README.md
Участие в разработке
- Сделайте форк репозитория
- Создайте ветку для фичи:
git checkout -b feature/amazing-feature - Зафиксируйте изменения:
git commit -m 'Add amazing feature' - Запушьте ветку:
git push origin feature/amazing-feature - Откройте Pull Request
Лицензия
MIT License — подробности в файле LICENSE.