К основному содержанию
скилл CX Codex

supabase-report-compare — скилл для Claude Code

Сравнивает два отчёта по безопасности Supabase и показывает, что починили, что осталось и что появилось нового. Пригодится после правок и на регулярных проверках.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add yoanbernabeu/supabase-pentest-skills --skill supabase-report-compare -a claude-code
Открыть на GitHub

Что делает supabase-report-compare

Скилл берёт два отчёта в Markdown и сопоставляет находки между ними. Совпадение определяется по идентификатору вроде P0-001, по компоненту с заголовком или по расположению — файлу, строке, эндпоинту. Дальше каждая находка получает статус: была и пропала — исправлена, была и осталась — висит, появилась только сейчас — новая.

На выходе — таблица по приоритетам P0, P1 и P2, сравнение баллов и оценок, список исправленного с датами, оставшиеся уязвимости и раздел с новыми. Отдельно считается доля закрытых находок и среднее время на исправление по каждому уровню. Если отчётов три и больше, добавляется таблица динамики по датам.

Оба отчёта должны быть по одному проекту и в формате Markdown. Ещё нужен хотя бы один отчёт, сделанный этим же набором скиллов, — иначе идентификаторы и структура находок не совпадут, и сопоставление пойдёт по описаниям, что даёт больше ложных пар.

Какие задачи решает

  • проверить, что закрылось после правок по безопасности
  • поймать регресс — новые уязвимости в свежем отчёте
  • показать динамику балла между двумя проверками
  • посчитать, сколько находок осталось открытыми по каждому приоритету
  • подготовить сводку для регулярного ревью безопасности

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

  • Сравни отчёты по безопасности old-report.md и new-report.md
  • Сравни reports/audit-v1.md с reports/audit-v2.md
  • Что исправили между этими двумя аудитами и что появилось нового?

Как установить supabase-report-compare

1Через Skills CLI (Vercel)

npx skills add yoanbernabeu/supabase-pentest-skills --skill supabase-report-compare -a claude-code

2Вручную: положить файлы

~/.claude/skills/supabase-report-compare/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/supabase-report-compare/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о supabase-report-compare

Как установить supabase-report-compare в Claude Code?

Выполните npx skills add yoanbernabeu/supabase-pentest-skills --skill supabase-report-compare -a claude-code. Файл скилла окажется по пути ~/.claude/skills/supabase-report-compare/SKILL.md.

Что делает supabase-report-compare?

Сопоставляет два отчёта аудита Supabase и делит находки на исправленные, оставшиеся и новые. Плюс считает разницу в баллах и долю закрытых проблем.

Что нужно, чтобы сравнение сработало?

Два отчёта в Markdown по одному и тому же проекту. Находки сопоставляются по идентификатору, компоненту с заголовком или расположению, поэтому отчёты из одного набора скиллов сравниваются точнее.

Исходный текст

SKILL.md · MIT
---
name: supabase-report-compare
description: Compare two security audit reports to track remediation progress and identify new vulnerabilities.
---

# Report Comparison

This skill compares two security audit reports to track progress over time.

## When to Use This Skill

- After fixing vulnerabilities, to verify remediation
- For periodic security reviews
- To track security posture over time
- To identify regression (new vulnerabilities)

## Prerequisites

- Two audit reports in Markdown format
- Reports should be from the same project

## Usage

### Basic Comparison

```
Compare security reports old-report.md and new-report.md
```

### With Specific Paths

```
Compare reports/audit-v1.md with reports/audit-v2.md
```

## Output Format

```
═══════════════════════════════════════════════════════════
 SECURITY AUDIT COMPARISON
═══════════════════════════════════════════════════════════

 Previous Audit: January 15, 2025
 Current Audit:  January 31, 2025
 Days Between:   16 days

 ─────────────────────────────────────────────────────────
 Score Comparison
 ─────────────────────────────────────────────────────────

 Previous Score: 35/100 (Grade: D)
 Current Score:  72/100 (Grade: C)
 Improvement:    +37 points ⬆️

 ┌────────────────────────────────────────────────────────┐
 │ Score Progress                                         │
 │                                                        │
 │  100 ┤                                                 │
 │   80 ┤                              ████████ 72       │
 │   60 ┤                              ████████          │
 │   40 ┤ ████████ 35                  ████████          │
 │   20 ┤ ████████                     ████████          │
 │    0 ┴─────────────────────────────────────────────── │
 │        Jan 15                       Jan 31            │
 └────────────────────────────────────────────────────────┘

 ─────────────────────────────────────────────────────────
 Findings Summary
 ─────────────────────────────────────────────────────────

 | Status      | P0  | P1  | P2  | Total |
 |-------------|-----|-----|-----|-------|
 | Previous    | 3   | 4   | 5   | 12    |
 | Current     | 0   | 2   | 4   | 6     |
 | Fixed       | 3   | 2   | 2   | 7     |
 | New         | 0   | 0   | 1   | 1     |

 ─────────────────────────────────────────────────────────
 Fixed Vulnerabilities ✅
 ─────────────────────────────────────────────────────────

 P0 (Critical) - ALL FIXED! 🎉

 ✅ P0-001: Service Role Key Exposed
    Status: FIXED
    Resolution: Key rotated, removed from client code
    Fixed on: January 16, 2025

 ✅ P0-002: Database Backups Publicly Accessible
    Status: FIXED
    Resolution: Bucket made private, files deleted
    Fixed on: January 16, 2025

 ✅ P0-003: Admin Function Privilege Escalation
    Status: FIXED
    Resolution: Added admin role verification
    Fixed on: January 17, 2025

 P1 (High) - 2 of 4 Fixed

 ✅ P1-001: Email Confirmation Disabled
    Status: FIXED
    Resolution: Email confirmation now required
    Fixed on: January 20, 2025

 ✅ P1-002: IDOR in get-user-data Function
    Status: FIXED
    Resolution: Added user ownership verification
    Fixed on: January 18, 2025

 P2 (Medium) - 2 of 5 Fixed

 ✅ P2-001: Weak Password Policy
    Status: FIXED
    Resolution: Minimum length increased to 10
    Fixed on: January 22, 2025

 ✅ P2-003: Disposable Emails Accepted
    Status: FIXED
    Resolution: Email validation added
    Fixed on: January 25, 2025

 ─────────────────────────────────────────────────────────
 Remaining Vulnerabilities ⚠️
 ─────────────────────────────────────────────────────────

 P1 (High) - 2 Remaining

 🟠 P1-003: User Enumeration via Timing Attack
    Status: OPEN (16 days)
    Priority: Address this week
    Note: Was in previous report, not yet fixed

 🟠 P1-004: Admin Channel Publicly Accessible
    Status: OPEN (16 days)
    Priority: Address this week

 P2 (Medium) - 3 Remaining

 🟡 P2-002: Wildcard CORS Origin
    Status: OPEN (16 days)

 🟡 P2-004: Verbose Error Messages
    Status: OPEN (16 days)

 🟡 P2-005: Rate Limiting Not Enforced on Functions
    Status: OPEN (16 days)

 ─────────────────────────────────────────────────────────
 New Vulnerabilities 🆕
 ─────────────────────────────────────────────────────────

 P2 (Medium) - 1 New Issue

 🆕 P2-006: New Storage Bucket Without RLS
    Severity: 🟡 P2
    Component: Storage
    Description: New bucket 'user-uploads' created without
                 RLS policies. Currently empty but will
                 need policies before production use.
    First Seen: January 31, 2025

 ─────────────────────────────────────────────────────────
 Progress Analysis
 ─────────────────────────────────────────────────────────

 Remediation Rate: 58% (7 of 12 fixed)

 By Severity:
 ├── P0 (Critical): 100% fixed ✅
 ├── P1 (High): 50% fixed
 └── P2 (Medium): 40% fixed

 Time to Fix (Average):
 ├── P0: 1.3 days (excellent)
 ├── P1: 3.5 days (good)
 └── P2: 5.5 days (acceptable)

 Regression: 1 new issue introduced
             (lower severity, acceptable)

 ─────────────────────────────────────────────────────────
 Recommendations
 ─────────────────────────────────────────────────────────

 1. CONTINUE PROGRESS
    Great work fixing all P0 issues! Focus now on
    remaining P1 issues:
    - User enumeration timing attack
    - Admin broadcast channel

 2. ADDRESS NEW ISSUE
    Configure RLS on 'user-uploads' bucket before
    it's used in production.

 3. SCHEDULE FOLLOW-UP
    Recommend another audit in 14 days to verify
    remaining fixes.

 ─────────────────────────────────────────────────────────
 Trend Analysis
 ─────────────────────────────────────────────────────────

 If you have 3+ reports, trend analysis is available:

 | Date       | Score | P0 | P1 | P2 | Total |
 |------------|-------|----|----|----| ------|
 | 2024-12-01 | 28    | 4  | 5  | 6  | 15    |
 | 2025-01-15 | 35    | 3  | 4  | 5  | 12    |
 | 2025-01-31 | 72    | 0  | 2  | 4  | 6     |

 Trend: Improving ⬆️

═══════════════════════════════════════════════════════════
```

## Comparison Logic

### Finding Matching

Findings are matched between reports using:

1. **ID match** — Same P0-001, P1-002, etc.
2. **Component + Title match** — Same issue description
3. **Location match** — Same file/line/endpoint

### Status Determination

| Previous | Current | Status |
|----------|---------|--------|
| Present | Absent | Fixed ✅ |
| Present | Present | Remaining ⚠️ |
| Absent | Present | New 🆕 |
| Absent | Absent | N/A |

### Score Calculation

```
Change = Current Score - Previous Score

Positive change = Improvement ⬆️
Negative change = Regression ⬇️
No change = Stable ➡️
```

## Context Output

```json
{
  "comparison": {
    "previous_date": "2025-01-15",
    "current_date": "2025-01-31",
    "previous_score": 35,
    "current_score": 72,
    "score_change": 37,
    "findings": {
      "previous_total": 12,
      "current_total": 6,
      "fixed": 7,
      "remaining": 5,
      "new": 1
    },
    "by_severity": {
      "P0": { "previous": 3, "current": 0, "fixed": 3, "new": 0 },
      "P1": { "previous": 4, "current": 2, "fixed": 2, "new": 0 },
      "P2": { "previous": 5, "current": 4, "fixed": 2, "new": 1 }
    },
    "remediation_rate": 0.58,
    "trend": "improving"
  }
}
```

## Report Output

The comparison generates `supabase-audit-comparison.md`:

```markdown
# Security Audit Comparison Report

## Summary

| Metric | Previous | Current | Change |
|--------|----------|---------|--------|
| Score | 35/100 | 72/100 | +37 ⬆️ |
| P0 Issues | 3 | 0 | -3 ✅ |
| P1 Issues | 4 | 2 | -2 ✅ |
| P2 Issues | 5 | 4 | -1 ✅ |
| Total | 12 | 6 | -6 ✅ |

## Fixed Issues (7)

[Detailed list of fixed issues...]

## Remaining Issues (5)

[Detailed list of remaining issues...]

## New Issues (1)

[Detailed list of new issues...]

## Recommendations

[Action items based on comparison...]
```

## Multiple Report Comparison

For trend analysis across 3+ reports:

```
Compare trend across reports/audit-*.md
```

Output includes:

- Score trend graph
- Issue count over time
- Average time to fix
- Recurring issues identification

## Best Practices

### Naming Convention

```
reports/
├── supabase-audit-2024-12-01.md
├── supabase-audit-2025-01-15.md
├── supabase-audit-2025-01-31.md
└── supabase-audit-comparison-2025-01-31.md
```

### Regular Audits

| Frequency | Purpose |
|-----------|---------|
| After fixes | Verify remediation |
| Monthly | Catch regressions |
| Before releases | Pre-production check |
| After incidents | Post-incident review |

### Tracking Progress

1. Keep all reports in version control
2. Link to issue tracker (GitHub, Jira)
3. Include in sprint planning
4. Report to stakeholders

## Related Skills

- `supabase-report` — Generate the reports to compare
- `supabase-pentest` — Run full audit
- `supabase-help` — Quick reference

© yoanbernabeu · MIT · yoanbernabeu/supabase-pentest-skills

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

Все скиллы по теме «Безопасность» →
git-guardrails-claude-code Matt Pocock Скилл ставит хук Claude Code, который останавливает опасные Git-команды до их запуска. Нужен, если агент не должен делать push или удалять изменения. 499 069установок ponytail-review DietrichGebert Скилл проверяет изменения глубже обычного diff: читает связанный код, ищет ошибки, риски, проблемы нагрузки и недостающие тесты. Пригодится для ревью PR и коммитов. CX Codex +1 57 000установок ponytail-audit DietrichGebert Проверяет репозиторий и ранжирует ошибки, риски и лишний код. Подойдёт, если нужен разовый разбор без автоматических правок. CX Codex +1 45 400установок security-audit cloudflare Проверяет кодовую базу на уязвимости и ищет нарушения границ доверия. Пригодится перед релизом или для точечного разбора опасных участков кода. CX Codex +1 54 800установок security-and-hardening addyosmani Помогает проектировать защиту и проверять код на уязвимости при работе с вводом, авторизацией, сессиями и внешними сервисами. Подойдёт перед релизом и при создании функций, которые обрабатывают недоверенные данные. CX Codex +1 70 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора19

supabase-audit-tables-list Перечисляет таблицы, доступные через Supabase PostgREST API, и помогает понять, что видно снаружи проекта. CX Codex +1 480установок supabase-detect Скилл проверяет, использует ли веб-приложение Supabase, и сохраняет найденные признаки. Пригодится перед аудитом неизвестного приложения. CX Codex +1 478установок supabase-extract-db-string Ищет строки подключения PostgreSQL и отдельные учётные данные Supabase в клиентском коде. Нужен при проверке приложения перед выпуском. CX Codex +1 477установок supabase-audit-buckets-list Перечисляет все storage-бакеты проекта Supabase вместе с настройками и помечает публичные как риск. Пригодится перед проверкой прав доступа к файлам. CX Codex +1 474установок supabase-audit-buckets-read Скилл перебирает файлы в бакетах Supabase Storage и показывает, что реально доступно по anon-ключу. Пригодится, когда нужно проверить политики RLS до релиза. CX Codex +1 471установок supabase-audit-auth-signup Проверяет, открыта ли регистрация в вашем проекте Supabase, и ищет векторы злоупотребления: спам-аккаунты, слабые пароли, одноразовые почты. CX Codex +1 473установок supabase-extract-jwt Скилл ищет JWT Supabase в клиентском коде, cookies и локальном хранилище, затем разбирает их claims. Пригодится для проверки утечек токенов. CX Codex +1 465установок supabase-audit-authenticated Создаёт тестового пользователя в Supabase и сравнивает, что видит авторизованный юзер, а что аноним. Ловит IDOR, доступ к чужим данным и эскалацию привилегий. CX Codex +1 422установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой