Claude Info
Безопасность

Анализатор JS

xrip/claude-skill-analyze-js

Claude Code скилл для статического анализа JavaScript-файлов: находит API-эндпоинты, URL, секреты, email и ссылки на файлы. Поддерживает TOON-формат вывода (на 50% компактнее JSON), оптимизированный для LLM. Запускается командой /analyze-js.

Установка

terminal
bash
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 скилл:

  1. В любой директории проекта с установленным скиллом:
User: analyze-js bundle.js User: analyze-js src/ dist/ User: analyze-js --verbose frontend/
  1. 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: Глобальная установка для использования в любом месте

bash
# 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 (без установки)

bash
# Скопируйте файл скилла
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:

  1. Запустит анализатор для указанных файлов/директорий
  2. Автоматически разберёт результаты (TOON или JSON формат)
  3. Представит находки в структурированном, читаемом виде
  4. Выделит критические элементы:
    • 🔴 Секреты (AWS-ключи, API-токены, учётные данные)
    • ⚠️ Admin-эндпоинты
    • 🔧 Информация о бандлере
    • 📧 Email-адреса
    • 📁 Ссылки на чувствительные файлы
  5. Предоставит контекст безопасности о найденном и почему это важно
  6. Покажет точные местоположения в формате 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

Установка (автономная)

bash
# Через npm
npm install -g js-analyzer-cli

# Через bun
bun install -g js-analyzer-cli

# Без установки через npx
npx js-analyzer-cli [options] <files...>

Базовое использование

bash
# Анализ одного файла
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-формат — для программной обработки:

json
{
  "file": "bundle.js",
  "findings": [
    {"type": "endpoint", "value": "/api/users", "line": 234}
  ]
}

Что обнаруживается

КатегорияПримеры
API-эндпоинты/api/users, /graphql, /oauth/token, /admin/panel
URLhttps://api.example.com, wss://socket.io, s3://bucket
СекретыAWS-ключи, Google API-ключи, Stripe-токены, JWT, приватные ключи
Emailuser@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

Участие в разработке

  1. Сделайте форк репозитория
  2. Создайте ветку для фичи: git checkout -b feature/amazing-feature
  3. Зафиксируйте изменения: git commit -m 'Add amazing feature'
  4. Запушьте ветку: git push origin feature/amazing-feature
  5. Откройте Pull Request

Лицензия

MIT License — подробности в файле LICENSE.

Похожие скиллы