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

warehouse-init — скилл для Claude Code: схема хранилища в одном файле

Собирает метаданные всех баз, схем и таблиц хранилища в .astro/warehouse.md, чтобы агент находил нужную таблицу без запросов к складу.

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

Что делает warehouse-init

Скилл проходит по базам из ~/.astro/agents/warehouse.yml и вытаскивает схемы, таблицы, колонки и число строк. Параллельно запускается субагент, который ищет контекст в коде: dbt-модели, SQL с YAML-фронтматтером, описания в AGENTS.md и CLAUDE.md. Потом всё сводится в один markdown-файл.

Внутри — готовый шаблон: таблица «концепт → таблица», семейства значений для колонок вроде STATUS или OPERATOR, иерархия слоёв данных и предупреждения о таблицах крупнее 100M строк. Файл версионируется вместе с проектом, его можно править руками и дополнять бизнес-контекстом. Для запросов к складу скилл дёргает CLI из соседнего скилла analyzing-data, поэтому тот должен стоять рядом.

Флаг --refresh перегенерирует файл, сохраняя ваши правки, --database ограничивает обход одной базой, --global пишет в ~/.astro/agents/. В конце скилл спросит, добавлять ли таблицу быстрых ссылок в CLAUDE.md — это заметно снижает число промахов на сложных запросах.

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

  • найти нужную таблицу по бизнес-понятию без похода в хранилище
  • собрать описания колонок из dbt-моделей и SQL-файлов в одно место
  • отметить таблицы, к которым нельзя обращаться без фильтра по дате
  • обновить карту схемы после переименования таблиц
  • подложить агенту контекст о слоях данных перед аналитическим запросом

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

  • /astronomer-data:warehouse-init
  • /astronomer-data:warehouse-init --refresh
  • /astronomer-data:warehouse-init --database HQ

Как установить warehouse-init

1Через Skills CLI (Vercel)

npx skills add astronomer/agents --skill warehouse-init -a claude-code

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

~/.claude/skills/warehouse-init/SKILL.md

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

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

Вопросы о warehouse-init

Как установить warehouse-init в Claude?

Выполните npx skills add astronomer/agents --skill warehouse-init -a claude-code. Скилл появится в ~/.claude/skills/warehouse-init/SKILL.md.

Что делает warehouse-init?

Обходит базы из конфигурации, собирает схемы, таблицы, колонки и число строк, добавляет описания из кода и пишет всё в .astro/warehouse.md. Дальше агент ищет таблицы по этому файлу, не трогая хранилище.

Что нужно для работы скилла?

Файл ~/.astro/agents/warehouse.yml со списком баз и установленный рядом скилл analyzing-data — его CLI скилл вызывает для SQL-запросов.

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

SKILL.md · Apache-2.0
---
name: warehouse-init
description: Initialize warehouse schema discovery. Generates .astro/warehouse.md with all table metadata for instant lookups. Run once per project, refresh when schema changes. Use when user says "/astronomer-data:warehouse-init" or asks to set up data discovery.
---

# Initialize Warehouse Schema

Generate a comprehensive, user-editable schema reference file for the data warehouse.

**Scripts:** `../analyzing-data/scripts/` — All CLI commands below are relative to the `analyzing-data` skill's directory. Before running any `scripts/cli.py` command, `cd` to `../analyzing-data/` relative to this file.

## What This Does

1. Discovers all databases, schemas, tables, and columns from the warehouse
2. **Enriches with codebase context** (dbt models, gusty SQL, schema docs)
3. Records row counts and identifies large tables
4. Generates `.astro/warehouse.md` - a version-controllable, team-shareable reference
5. Enables instant concept→table lookups without warehouse queries

## Process

### Step 1: Read Warehouse Configuration

```bash
cat ~/.astro/agents/warehouse.yml
```

Get the list of databases to discover (e.g., `databases: [HQ, ANALYTICS, RAW]`).

### Step 2: Search Codebase for Context (Parallel)

**Launch a subagent to find business context in code:**

```
Task(
    subagent_type="Explore",
    prompt="""
    Search for data model documentation in the codebase:

    1. dbt models: **/models/**/*.yml, **/schema.yml
       - Extract table descriptions, column descriptions
       - Note primary keys and tests

    2. Gusty/declarative SQL: **/dags/**/*.sql with YAML frontmatter
       - Parse frontmatter for: description, primary_key, tests
       - Note schema mappings

    3. AGENTS.md or CLAUDE.md files with data layer documentation

    Return a mapping of:
      table_name -> {description, primary_key, important_columns, layer}
    """
)
```

### Step 3: Parallel Warehouse Discovery

**Launch one subagent per database** using the Task tool:

```
For each database in configured_databases:
    Task(
        subagent_type="general-purpose",
        prompt="""
        Discover all metadata for database {DATABASE}.

        Use the CLI to run SQL queries:
        # Scripts are relative to ../analyzing-data/
        uv run scripts/cli.py exec "df = run_sql('...')"
        uv run scripts/cli.py exec "print(df)"

        1. Query schemas:
           SELECT SCHEMA_NAME FROM {DATABASE}.INFORMATION_SCHEMA.SCHEMATA

        2. Query tables with row counts:
           SELECT TABLE_SCHEMA, TABLE_NAME, ROW_COUNT, COMMENT
           FROM {DATABASE}.INFORMATION_SCHEMA.TABLES
           ORDER BY TABLE_SCHEMA, TABLE_NAME

        3. For important schemas (MODEL_*, METRICS_*, MART_*), query columns:
           SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COMMENT
           FROM {DATABASE}.INFORMATION_SCHEMA.COLUMNS
           WHERE TABLE_SCHEMA = 'X'

        Return a structured summary:
        - Database name
        - List of schemas with table counts
        - For each table: name, row_count, key columns
        - Flag any tables with >100M rows as "large"
        """
    )
```

**Run all subagents in parallel** (single message with multiple Task calls).

### Step 4: Discover Categorical Value Families

For key categorical columns (like OPERATOR, STATUS, TYPE, FEATURE), discover value families:

```bash
uv run cli.py exec "df = run_sql('''
SELECT DISTINCT column_name, COUNT(*) as occurrences
FROM table
WHERE column_name IS NOT NULL
GROUP BY column_name
ORDER BY occurrences DESC
LIMIT 50
''')"
uv run cli.py exec "print(df)"
```

Group related values into families by common prefix/suffix (e.g., `Export*` for ExportCSV, ExportJSON, ExportParquet).

### Step 5: Merge Results

Combine warehouse metadata + codebase context:

1. **Quick Reference table** - concept → table mappings (pre-populated from code if found)
2. **Categorical Columns** - value families for key filter columns
3. **Database sections** - one per database
4. **Schema subsections** - tables grouped by schema
5. **Table details** - columns, row counts, **descriptions from code**, warnings

### Step 6: Generate warehouse.md

Write the file to:
- `.astro/warehouse.md` (default - project-specific, version-controllable)
- `~/.astro/agents/warehouse.md` (if `--global` flag)

## Output Format

```markdown
# Warehouse Schema

> Generated by `/astronomer-data:warehouse-init` on {DATE}. Edit freely to add business context.

## Quick Reference

| Concept | Table | Key Column | Date Column |
|---------|-------|------------|-------------|
| customers | HQ.MODEL_ASTRO.ORGANIZATIONS | ORG_ID | CREATED_AT |
<!-- Add your concept mappings here -->

## Categorical Columns

When filtering on these columns, explore value families first (values often have variants):

| Table | Column | Value Families |
|-------|--------|----------------|
| {TABLE} | {COLUMN} | `{PREFIX}*` ({VALUE1}, {VALUE2}, ...) |
<!-- Populated by /astronomer-data:warehouse-init from actual warehouse data -->

## Data Layer Hierarchy

Query downstream first: `reporting` > `mart_*` > `metric_*` > `model_*` > `IN_*`

| Layer | Prefix | Purpose |
|-------|--------|---------|
| Reporting | `reporting.*` | Dashboard-optimized |
| Mart | `mart_*` | Combined analytics |
| Metric | `metric_*` | KPIs at various grains |
| Model | `model_*` | Cleansed sources of truth |
| Raw | `IN_*` | Source data - avoid |

## {DATABASE} Database

### {SCHEMA} Schema

#### {TABLE_NAME}
{DESCRIPTION from code if found}

| Column | Type | Description |
|--------|------|-------------|
| COL1 | VARCHAR | {from code or inferred} |

- **Rows:** {ROW_COUNT}
- **Key column:** {PRIMARY_KEY from code or inferred}
{IF ROW_COUNT > 100M: - **⚠️ WARNING:** Large table - always add date filters}

## Relationships

```
{Inferred relationships based on column names like *_ID}
```
```

## Command Options

| Option | Effect |
|--------|--------|
| `/astronomer-data:warehouse-init` | Generate .astro/warehouse.md |
| `/astronomer-data:warehouse-init --refresh` | Regenerate, preserving user edits |
| `/astronomer-data:warehouse-init --database HQ` | Only discover specific database |
| `/astronomer-data:warehouse-init --global` | Write to ~/.astro/agents/ instead |

### Step 7: Pre-populate Cache

After generating warehouse.md, populate the concept cache:

```bash
# Scripts are relative to ../analyzing-data/
uv run cli.py concept import -p .astro/warehouse.md
uv run cli.py concept learn customers HQ.MART_CUST.CURRENT_ASTRO_CUSTS -k ACCT_ID
```

### Step 8: Offer CLAUDE.md Integration (Ask User)

**Ask the user:**

> Would you like to add the Quick Reference table to your CLAUDE.md file?
>
> This ensures the schema mappings are always in context for data queries, improving accuracy from ~25% to ~100% for complex queries.
>
> Options:
> 1. **Yes, add to CLAUDE.md** (Recommended) - Append Quick Reference section
> 2. **No, skip** - Use warehouse.md and cache only

**If user chooses Yes:**

1. Check if `.claude/CLAUDE.md` or `CLAUDE.md` exists
2. If exists, append the Quick Reference section (avoid duplicates)
3. If not exists, create `.claude/CLAUDE.md` with just the Quick Reference

**Quick Reference section to add:**

```markdown
## Data Warehouse Quick Reference

When querying the warehouse, use these table mappings:

| Concept | Table | Key Column | Date Column |
|---------|-------|------------|-------------|
{rows from warehouse.md Quick Reference}

**Large tables (always filter by date):** {list tables with >100M rows}

> Auto-generated by `/astronomer-data:warehouse-init`. Run `/astronomer-data:warehouse-init --refresh` to update.
```
**If yes:** Append the Quick Reference section to `.claude/CLAUDE.md` or `CLAUDE.md`.

## After Generation

Tell the user:

```
Generated .astro/warehouse.md

Summary:
  - {N} databases, {N} schemas, {N} tables
  - {N} tables enriched with code descriptions
  - {N} concepts cached for instant lookup

Next steps:
  1. Edit .astro/warehouse.md to add business context
  2. Commit to version control
  3. Run /astronomer-data:warehouse-init --refresh when schema changes
```

## Refresh Behavior

When `--refresh` is specified:

1. Read existing warehouse.md
2. Preserve all HTML comments (`<!-- ... -->`)
3. Preserve Quick Reference table entries (user-added)
4. Preserve user-added descriptions
5. Update row counts and add new tables
6. Mark removed tables with `<!-- REMOVED -->` comment

## Cache Staleness & Schema Drift

The runtime cache has a **7-day TTL** by default. After 7 days, cached entries expire and will be re-discovered on next use.

### When to Refresh

Run `/astronomer-data:warehouse-init --refresh` when:
- **Schema changes**: Tables added, renamed, or removed
- **Column changes**: New columns added or types changed
- **After deployments**: If your data pipeline deploys schema migrations
- **Weekly**: As a good practice, even if no known changes

### Signs of Stale Cache

Watch for these indicators:
- Queries fail with "table not found" errors
- Results seem wrong or outdated
- New tables aren't being discovered

### Manual Cache Reset

If you suspect cache issues:

```bash
# Scripts are relative to ../analyzing-data/
uv run scripts/cli.py cache status
uv run scripts/cli.py cache clear --stale-only
uv run scripts/cli.py cache clear
```

## Codebase Patterns Recognized

| Pattern | Source | What We Extract |
|---------|--------|-----------------|
| `**/models/**/*.yml` | dbt | table/column descriptions, tests |
| `**/dags/**/*.sql` | gusty | YAML frontmatter (description, primary_key) |
| `AGENTS.md`, `CLAUDE.md` | docs | data layer hierarchy, conventions |
| `**/docs/**/*.md` | docs | business context |

## Example Session

```
User: /astronomer-data:warehouse-init

Agent:
→ Reading warehouse configuration...
→ Found 1 warehouse with databases: HQ, PRODUCT

→ Searching codebase for data documentation...
  Found: AGENTS.md with data layer hierarchy
  Found: 45 SQL files with YAML frontmatter in dags/declarative/

→ Launching parallel warehouse discovery...
  [Database: HQ] Discovering schemas...
  [Database: PRODUCT] Discovering schemas...

→ HQ: Found 29 schemas, 401 tables
→ PRODUCT: Found 1 schema, 0 tables

→ Merging warehouse metadata with code context...
  Enriched 45 tables with descriptions from code

→ Generated .astro/warehouse.md

Summary:
  - 2 databases
  - 30 schemas
  - 401 tables
  - 45 tables enriched with code descriptions
  - 8 large tables flagged (>100M rows)

Next steps:
  1. Review .astro/warehouse.md
  2. Add concept mappings to Quick Reference
  3. Commit to version control
  4. Run /astronomer-data:warehouse-init --refresh when schema changes
```

© astronomer · Apache-2.0 · astronomer/agents

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

Все скиллы по теме «Данные и базы» →
using-dbt-state dbt-labs Скилл объясняет агенту, как работает dbt State: когда узел пропускается, клонируется или пересобирается. Пригодится, если модели пересобираются без причины. CX Codex +1 554установок warehouse-optimization nexscope-ai Анализирует запасы и операции склада, рассчитывает страховой запас и точки заказа. Нужен для работы с дефицитом, излишками и расходами на фулфилмент. CX Codex +1 1 100установок using-dbt-for-analytics-engineering dbt-labs Скилл ведёт агента через сборку dbt-моделей, SQL-трансформации на ref() и source(), тесты и проверку результатов через dbt show. CX Codex +1 1 200установок dbt-transformation-patterns Seth Hobson Скилл для Claude, Codex и Cursor, который подсказывает агенту, как раскладывать dbt-модели по слоям, писать тесты и делать инкрементальные витрины. CX Codex 11 000установок dbt-sf-to-bq-translator официальный google Переводит dbt-модели Snowflake в Standardized BigQuery SQL. Нужен для миграции пайплайнов на Google Cloud через Claude Code, Gemini CLI или Codex. CX Codex 2 300установок dbt-data-transformation manutej Скилл по dbt для аналитической инженерии: модели, тесты, документация, инкрементальные сборки, макросы и пакеты. Пригодится, когда нужно навести порядок в SQL-преобразованиях в хранилище. CX Codex +1 441установок

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

tracing-upstream-lineage Скилл для агента, который отвечает на вопрос «откуда взялись эти данные»: ищет DAG, читает исходники и строит цепочку до внешних систем. CX Codex +1 1 000установок cosmos-dbt-core Превращает проект dbt Core в Airflow DAG или TaskGroup через Astronomer Cosmos. Пригодится, когда нужно расписание и ретраи для моделей dbt. CX Codex +1 962установок airflow-hitl Скилл для сборки HITL-воркфлоу в Airflow: шаги согласования, ввод формы и ветвление по выбору человека. Нужен, когда DAG должен ждать ответа из UI. CX Codex +1 952установок creating-openlineage-extractors Скилл помогает настроить сбор OpenLineage для операторов Airflow без встроенной поддержки. Полезен, когда нужны метаданные уровня колонок или кастомная логика происхождения данных. CX Codex +1 933установок deploying-airflow Скилл для деплоя DAG и проектов Airflow: команды Astro CLI, Docker Compose и Helm. Пригодится, когда нужно выкатить пайплайны в прод. CX Codex +1 786установок troubleshooting-astro-deployments Скилл ведёт агента по шагам диагностики продакшн-развёртываний Astronomer через Astro CLI: логи, ошибки, переменные окружения. CX Codex +1 622установок airflow-plugins Скилл помогает писать плагины Airflow 3.1+ с FastAPI-эндпоинтами, React-страницами и своими вкладками прямо в UI. Пригодится, когда нужно что-то своё внутри Airflow. CX Codex +1 594установок managing-astro-deployments Скилл ведёт агента через Astro CLI: вход, переключение воркспейсов, создание деплойментов и выкладка кода в продакшен. CX Codex +1 567установок

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

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