barrage — скилл

Скилл и Go-утилита для нагрузочных тестов: HTTP, база и Redis на общей шкале времени и отчет с точкой, где просела система

  • 129 ★ репозитория
  • Последний коммит
Скилл

Расширенный доступ

Почему такой уровень

  • Создает реальную нагрузку на указанные адреса, базы и Redis.
Все причины и проверки

codetesla51/barrage

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/barrage

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Создает реальную нагрузку на указанные адреса, базы и Redis.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

barrage — утилита на Go, которая гонит нагрузку на HTTP, базу данных и Redis одновременно и пишет задержки каждого слоя в общие временные корзины. Отчет сопоставляет их по корзинам и показывает, просел ли сам сервис или хранилище под ним. Скилл из `SKILL.md` ведет агента по этапам: осмотреть проект, спросить у пользователя цели, собрать конфиг в YAML, запустить `barrage run` и разобрать результат. Агент ничего не домысливает и уточняет недостающее. Прогоны сравнивает `barrage compare`, отчет получается самодостаточным HTML.

Для кого. Бэкенд-разработчику и SRE, которые ищут узкое место в связке API, базы и кэша. Postgres, MySQL и SQLite поддерживаются из коробки.

Подходит, если

  • Сервис замедлился под нагрузкой, и неясно, виновато приложение или база.
  • Нужен отчет, где задержки API, базы и Redis лежат на одной шкале времени.
  • Перед релизом сравнивают два прогона через `barrage compare`.
  • Нагрузку на хранилища проверяют с имитацией сбоев через Toxiproxy.

Не подходит, если

  • Тест нужен по готовому сценарию с браузером и скриптами пользователя.
  • Проверять предстоит чужую продакшен-систему без разрешения владельца.
  • Достаточно разового замера одного HTTP-адреса.

Пример запроса к агенту

Найди узкое место: нагрузи API и Postgres вместе и покажи, в какой момент база начала тормозить приложение.

Ограничения

Утилита создает реальную нагрузку: направляйте ее на свои стенды, боевые системы без согласования трогать нельзя. База и Redis проверяются только при настроенных подключениях в `config.yaml`. Установочный скрипт качает готовый бинарь из релизов GitHub, при желании собирайте из исходников (нужен Go 1.25 и новее). Отчет подтягивает Chart.js с CDN, а данные прогона встроены в страницу. Агент следует рабочему порядку из `SKILL.md`: сначала осмотр проекта и вопросы, затем конфиг, поэтому полностью автоматический запуск без подтверждений не предполагается.

Как отключить. Удалите папку скилла и бинарь `barrage` из каталога, куда его поставил скрипт. Файлы конфигов и отчетов уберите вручную.

Частые вопросы

Как поставить barrage?

Выполните `curl -fsSL https://raw.githubusercontent.com/codetesla51/barrage/main/install.sh | bash`. Скрипт берет готовый бинарь из релизов, Go для этого не нужен.

Какие базы поддерживаются?

Postgres, MySQL и SQLite. Другой драйвер подключается пустым импортом, потому что слой работает поверх `database/sql`.

Чем barrage отличается от обычного нагрузочного теста?

Он пишет задержки HTTP, базы и Redis в одни корзины времени и отмечает, в какой корзине просел слой хранения и задело ли это приложение.

Как сравнить два прогона?

Команда `barrage compare --baseline base.json --current new.json` показывает разницу между результатами.

Нужен ли браузер для отчета в CI?

Нет. Ключи `--no-report --json results.json` пишут результат в файл без открытия страницы.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Скилл учит агента писать тесты для Go на фреймворке gotest: хуки жизненного цикла, параллельность и запуск через go tool.

СкиллМинимальный доступ129Звезды репозитория

Caliper прогоняет задачи агента с вашим скиллом и без него и показывает, помогает ли скилл и сколько токенов он стоит

CLIРасширенный доступ232Звезды репозитория

CLI для оценки и доработки скиллов агентов: декларативные тесты в YAML, запуск на разных движках и структурированные отчеты

CLIРасширенный доступ1,5 тыс.Звезды репозитория

CLI и MCP для проверки скиллов: повторяемые тесты на YAML, сравнение отчетов, поиск регрессий и процесс skilled-improve

CLIРасширенный доступ72Звезды репозитория

Скилл, который один раз читает репозиторий и ставит проверки: правила кода становятся шлюзами, которые ломают коммит или CI.

СкиллРасширенный доступ180Звезды репозитория

HTTP-нагрузочный тест на Rust с MCP-сервером: агент запускает прогон и получает перцентили задержек и разбивку статусов.

CLIШирокий доступ146Звезды репозитория

Коротко о README

Утилита ведет нагрузку по HTTP, базе и Redis с общей линией времени и пишет отчет HTML. Сценарии, темп и рампа задаются в `config.yaml`, для CI есть JSON-вывод без браузера.

Бейдж для README

Исходный SKILL.md

---
name: barrage
description: Diagnose app slowness with barrage — run HTTP/DB/Redis/scenario load, correlate spikes to find bottlenecks, compare runs for regressions, estimate capacity. Use when a project is slow, when asked where latency comes from, or when working in the barrage repo itself.
---

# Barrage skill

Barrage is a Go CLI that answers one question: **when an app slows down, is it
the app, or the database / cache underneath it?** It fires HTTP, DB, and Redis
load on one clock, buckets every layer's latencies onto the same timeline, and
flags exactly which bucket a storage layer spiked in — and whether the app
felt it.

Use this skill whenever:

- someone says "the API is slow", "p99 is high", "it works locally but not
  under load", "find the bottleneck"
- you need to check a project for perf problems (N+1, missing index,
  pool exhaustion, cache miss, rate limiter, slow journey step)
- you need a before/after proof for a migration, tuning pass, or release
- you are editing the barrage repo itself

## Install / build

```sh
# preferred: prebuilt binary from GitHub releases (no Go needed)
curl -fsSL https://raw.githubusercontent.com/codetesla51/barrage/main/install.sh | bash

# pin a version, change the install dir, or build from source instead:
curl -fsSL https://raw.githubusercontent.com/codetesla51/barrage/main/install.sh | bash -s -- --version v0.7.2 --dir ~/.local/bin
curl -fsSL https://raw.githubusercontent.com/codetesla51/barrage/main/install.sh | bash -s -- --from-source

# from a checkout (requires Go 1.25+):
go build -o barrage ./cmd/barrage
go install github.com/codetesla51/barrage/cmd/barrage@latest  # fallback only
```

## Fastest run (30 seconds)

```sh
# 1. start the demo backend (login/me/products/orders/checkout on :8080)
go run ./cmd/demoserver &

# 2. run a canned profile against it
./barrage run -c examples/light.yaml
./barrage run -c examples/scenarios-weighted.yaml   # user journeys, not plain HTTP

# 3. artifacts land next to you
ls report.html results.json   # --report PATH, --json PATH, --no-report to skip
./barrage run -c config.yaml -o   # ...and open the report in a browser

Сообщить о проблеме