К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

storage-format — скилл для Claude Code: формат файла SQLite

Справочник по формату файла SQLite: заголовок, страницы, B-деревья, ячейки, overflow и freelist, с привязкой к коду Turso.

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

Что делает storage-format

Скилл разбирает файл SQLite по слоям: заголовок в первых 100 байтах, страницы, B-деревья, ячейки, overflow-цепочки, freelist. Пригодится, когда надо разобрать дамп, написать парсер страниц или понять, почему крупная запись уехала в overflow.

В тексте есть таблица смещений заголовка (page size, schema cookie, text encoding), флаги типов страниц от 0x02 до 0x0d, раскладка ячейки листа и внутренней страницы, serial types записи. Отдельный блок привязывает это к Turso: core/storage/sqlite3_ondisk.rs с enum PageType, btree.rs, pager.rs, buffer_pool.rs.

Для отладки даются команды вида cargo run --bin tursodb test.db "PRAGMA integrity_check;". Идут они через бинарник из репозитория Turso, поэтому в своём проекте так просто не запустятся: сначала нужны эти исходники. Размер страницы — степень двойки от 512 до 65536 байт, по умолчанию 4096.

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

  • разобрать структуру страниц в сыром дампе SQLite
  • найти overflow-цепочку для записи, не влезшей в ячейку
  • сверить порядок big-endian полей заголовка
  • прочитать serial types в полезной нагрузке записи
  • прогнать PRAGMA integrity_check через tursodb

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

  • Объясни по формату файла SQLite, как лежит запись таблицы с BLOB больше одной страницы: от ячейки до overflow.
  • Где в заголовке БД лежит schema cookie и в каком порядке идут байты?
  • Сверь мой парсер страниц с `core/storage/sqlite3_ondisk.rs` из Turso — какие типы страниц я пропустил?

Как установить storage-format

1Через Skills CLI (Vercel)

npx skills add tursodatabase/turso --skill storage-format -a claude-code

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

~/.claude/skills/storage-format/SKILL.md

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

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

Весь набор →
code-quality tursodatabase Набор правил корректности, Rust-паттернов и принципов без переусложнения для агентов, которые пишут код в вашем проекте. Claude Code CX Codex Cursor +1 1 800установок testing tursodatabase Скилл помогает писать тесты для SQL и Rust: учит выбирать между форматами .sqltest, TCL и интеграционными тестами, показывает команды для запуска. Claude Code CX Codex Cursor +1 1 300установок async-io-model tursodatabase Обучает агента архитектуре асинхронного ввода-вывода в Turso: явным стейт-машинам, типу IOResult и защите от багов повторного входа. Claude Code CX Codex Cursor +1 1 300установок debugging tursodatabase Скилл по отладке tursodb: сравнить байткод с SQLite, включить трейс-логи, прогнать ThreadSanitizer, воспроизвести баг по seed и замерить стек. Claude Code CX Codex Cursor +1 1 300установок index-knowledge tursodatabase Скилл автоматически создаёт иерархическую документацию AGENTS.md для кодовой базы. Анализирует структуру проекта, оценивает сложность каждой папки и генерирует файлы с инструкциями для ИИ-агентов. Claude Code CX Codex Cursor +1 1 300установок mvcc tursodatabase Справочник по экспериментальному MVCC в кодовой базе Turso: многоверсионность строк, изоляция снимков и ограничения памяти. Пригодится при отладке и разработке ядра базы данных. Claude Code CX Codex Cursor +1 1 200установок differential-fuzzer tursodatabase Скилл помогает запускать дифференциальный фаззер Turso и разбирать расхождения с SQLite. Нужен при поиске ошибок корректности в сгенерированных SQL-запросах. Claude Code CX Codex Cursor +1 1 200установок transaction-correctness tursodatabase Объясняет механику транзакций в Turso: как работает WAL, чекпоинты, восстановление после сбоя и правила конкурентного доступа. Claude Code CX Codex Cursor +1 1 200установок

Похожие

scaffolding-oracle-to-postgres-migration-test-project официальный github Создаёт пустой xUnit-проект интеграционных тестов для Oracle в .NET-решении. Нужен перед написанием базовых тестов на этапе Phase 3. GitHub Copilot 1 700установок bigquery-troubleshooting официальный google Скилл разбирает сбои, медленные задания и неожиданный рост расходов в BigQuery. Он помогает найти узкое место и выбрать шаги для исправления. Claude Code Gemini CLI CX Codex 1 400установок bigquery-optimization официальный google Скилл помогает находить способы снизить расходы BigQuery, настроить хранение и переписать SQL. Подходит для планирования capacity и изменений таблиц. Claude Code Gemini CLI CX Codex 1 400установок agent-memory-systems sickn33 Скилл для проектирования памяти агентов с разделением по пользователям и тенантам. Помогает построить RAG, историю диалогов и хранилище векторов так, чтобы данные одного клиента не утекали к другому. Claude Code CX Codex Cursor +1 2 000установок database-lookup K-Dense-AI Находит факты в 80 внешних базах данных через API с контролем пагинации и источников. Пригодится, когда научные или финансовые данные нужно подтвердить первоисточником. Claude Code CX Codex Cursor +1 2 100установок seaborn K-Dense-AI Скилл для Claude Code и других агентов: тот строит статистические графики на seaborn из pandas DataFrame, с готовыми рецептами под распределения, регрессии и тепловые карты. Claude Code CX Codex Cursor +1 2 100установок xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. Claude Code Claude.ai 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. Claude Code CX Codex Cursor +1 509 900установок

Вопросы о storage-format

Как установить storage-format в Claude Code?

Выполните npx skills add tursodatabase/turso --skill storage-format -a claude-code. Скилл окажется в ~/.claude/skills/storage-format/SKILL.md.

Что делает storage-format?

Описывает, как SQLite хранит данные на диске: заголовок, типы страниц, ячейки, записи, overflow и freelist. Агенту это нужно, чтобы читать и писать код разбора файла БД.

Какие файлы Turso разбирает скилл?

core/storage/sqlite3_ondisk.rs, где лежит enum PageType, а также btree.rs, pager.rs и buffer_pool.rs. По ним видно, как формат ложится на реальную реализацию.

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

SKILL.md · MIT
---
name: storage-format
description: SQLite file format, B-trees, pages, cells, overflow, freelist that is used in tursodb
---
# Storage Format Guide

## Database File Structure

```
┌─────────────────────────────┐
│ Page 1: Header + Schema     │  ← First 100 bytes = DB header
├─────────────────────────────┤
│ Page 2..N: B-tree pages     │  ← Tables and indexes
│            Overflow pages   │
│            Freelist pages   │
└─────────────────────────────┘
```

Page size: power of 2, 512-65536 bytes. Default 4096.

## Database Header (First 100 Bytes)

| Offset | Size | Field |
|--------|------|-------|
| 0 | 16 | Magic: `"SQLite format 3\0"` |
| 16 | 2 | Page size (big-endian) |
| 18 | 1 | Write format version (1=rollback, 2=WAL) |
| 19 | 1 | Read format version |
| 24 | 4 | Change counter |
| 28 | 4 | Database size in pages |
| 32 | 4 | First freelist trunk page |
| 36 | 4 | Total freelist pages |
| 40 | 4 | Schema cookie |
| 56 | 4 | Text encoding (1=UTF8, 2=UTF16LE, 3=UTF16BE) |

All multi-byte integers: **big-endian**.

## Page Types

| Flag | Type | Purpose |
|------|------|---------|
| 0x02 | Interior index | Index B-tree internal node |
| 0x05 | Interior table | Table B-tree internal node |
| 0x0a | Leaf index | Index B-tree leaf |
| 0x0d | Leaf table | Table B-tree leaf |
| - | Overflow | Payload exceeding cell capacity |
| - | Freelist | Unused pages (trunk or leaf) |

## B-tree Structure

Two B-tree types:
- **Table B-tree**: 64-bit rowid keys, stores row data
- **Index B-tree**: Arbitrary keys (index columns + rowid)

```
Interior page:  [ptr0] key1 [ptr1] key2 [ptr2] ...
                   │         │         │
                   ▼         ▼         ▼
               child     child     child
               pages     pages     pages

Leaf page:     key1:data  key2:data  key3:data ...
```

Page 1 always root of `sqlite_schema` table.

## Cell Format

### Table Leaf Cell
```
[payload_size: varint] [rowid: varint] [payload] [overflow_ptr: u32?]
```

### Table Interior Cell
```
[left_child_page: u32] [rowid: varint]
```

### Index Cells
Similar but key is arbitrary (columns + rowid), not just rowid.

## Record Format (Payload)

```
[header_size: varint] [type1: varint] [type2: varint] ... [data1] [data2] ...
```

Serial types:
| Type | Meaning |
|------|---------|
| 0 | NULL |
| 1-4 | 1/2/3/4 byte signed int |
| 5 | 6 byte signed int |
| 6 | 8 byte signed int |
| 7 | IEEE 754 float |
| 8 | Integer 0 |
| 9 | Integer 1 |
| ≥12 even | BLOB, length=(N-12)/2 |
| ≥13 odd | Text, length=(N-13)/2 |

## Overflow Pages

When payload exceeds threshold, excess stored in overflow chain:
```
[next_page: u32] [data...]
```
Last page has next_page=0.

## Freelist

Linked list of trunk pages, each containing leaf page numbers:
```
Trunk: [next_trunk: u32] [leaf_count: u32] [leaf_pages: u32...]
```

## Turso Implementation

Key files:
- `core/storage/sqlite3_ondisk.rs` - On-disk format, `PageType` enum
- `core/storage/btree.rs` - B-tree operations (large file)
- `core/storage/pager.rs` - Page management
- `core/storage/buffer_pool.rs` - Page caching

## Debugging Storage

```bash
# Integrity check
cargo run --bin tursodb test.db "PRAGMA integrity_check;"

# Page count
cargo run --bin tursodb test.db "PRAGMA page_count;"

# Freelist info
cargo run --bin tursodb test.db "PRAGMA freelist_count;"
```

## References

- [SQLite File Format](https://sqlite.org/fileformat.html)
- [SQLite B-Tree Module](https://sqlite.org/btreemodule.html)
- [SQLite Internals: Pages & B-trees](https://fly.io/blog/sqlite-internals-btree/)

© tursodatabase · MIT · tursodatabase/turso

Смотрите также

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

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