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

duckdb-docs — скилл для Claude Code: поиск документации

Ищет фрагменты документации и блога DuckDB, а также DuckLake, по вопросу или ключевому слову. Пригодится, когда агенту нужен ответ со ссылкой на исходный раздел.

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

Что делает duckdb-docs

Скилл выполняет полнотекстовый поиск по локально сохранённому индексу документации DuckDB и записей блога. Для запросов о DuckLake он выбирает отдельный индекс. Вопрос на естественном языке сокращается до технических терминов, а результаты ранжируются через BM25 и выводятся с заголовком, разделом, путём и текстом фрагмента.

Перед поиском скилл проверяет duckdb, устанавливает расширения httpfs и fts, затем обновляет кэш в $HOME/.duckdb/docs, если ему больше 2 дней. Обычно поиск DuckDB ограничен версией lts; для текущих возможностей, блога или DuckLake используются другие версии индекса. Для работы нужны duckdb, httpfs и fts; если установка расширений завершается ошибкой, поиск останавливается. Это повод проверить окружение и соединение заранее.

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

  • найти раздел документации DuckDB по SQL-вопросу
  • отыскать описание функции arg_max
  • получить фрагменты документации DuckLake
  • найти запись блога DuckDB по теме
  • проверить документацию текущей версии DuckDB

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

  • Найди в DuckDB, как получить самое частое значение.
  • Поищи документацию DuckLake по каталогам.
  • Найди описание GROUP BY ALL в DuckDB.

Как установить duckdb-docs

1Через Skills CLI (Vercel)

npx skills add duckdb/duckdb-skills --skill duckdb-docs -a claude-code

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

~/.claude/skills/duckdb-docs/SKILL.md

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

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

Вопросы о duckdb-docs

Как установить duckdb-docs в Claude Code?

Выполните npx skills add duckdb/duckdb-skills --skill duckdb-docs -a claude-code. Файл скилла будет расположен в ~/.claude/skills/duckdb-docs/SKILL.md.

Что делает duckdb-docs?

Скилл ищет документацию и блог DuckDB либо документацию DuckLake по ключевым словам. Он возвращает подходящие фрагменты из локального кэша и формулирует ответ по найденному материалу.

Что нужно для работы duckdb-docs?

Нужен установленный duckdb. Скилл также устанавливает и загружает расширения httpfs и fts; для обновления кэша требуется доступ к индексу документации.

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

SKILL.md · MIT
---
name: duckdb-docs
description: >
  Search DuckDB and DuckLake documentation and blog posts. Returns relevant
  doc chunks for a question or keyword using full-text search against a
  locally cached index.
argument-hint: <question or keyword>
allowed-tools: Bash
---

You are helping the user find relevant DuckDB or DuckLake documentation.

Query: `$@`

Follow these steps in order.

## Step 1 — Check DuckDB is installed

```bash
command -v duckdb
```

If not found, delegate to `/duckdb-skills:install-duckdb` and then continue.

## Step 2 — Ensure required extensions are installed

```bash
duckdb :memory: -c "INSTALL httpfs; INSTALL fts;"
```

If this fails, report the error and stop.

## Step 3 — Choose the data source and extract search terms

The query is: `$@`

### Data source selection

There are two search indexes available:

| Index | Remote URL | Local cache filename | Versions | Use when |
|-------|-----------|---------------------|----------|----------|
| **DuckDB docs + blog** | `https://duckdb.org/data/docs-search.duckdb` | `duckdb-docs.duckdb` | `lts`, `current`, `blog` | Default — any DuckDB question |
| **DuckLake docs** | `https://ducklake.select/data/docs-search.duckdb` | `ducklake-docs.duckdb` | `stable`, `preview` | Query mentions DuckLake, catalogs, or DuckLake-specific features |

Both indexes share the same schema:

| Column | Type | Description |
|--------|------|-------------|
| `chunk_id` | `VARCHAR` (PK) | e.g. `stable/sql/functions/numeric#absx` |
| `page_title` | `VARCHAR` | Page title from front matter |
| `section` | `VARCHAR` | Section heading (null for page intros) |
| `breadcrumb` | `VARCHAR` | e.g. `SQL > Functions > Numeric` |
| `url` | `VARCHAR` | URL path with anchor |
| `version` | `VARCHAR` | See table above |
| `text` | `TEXT` | Full markdown of the chunk |

By default, search **DuckDB docs** and filter to `version = 'lts'`. Use different versions when:

- The user explicitly asks about `current`/nightly features → `version = 'current'`
- The user asks about a blog post or wants background/motivation → `version = 'blog'`
- The user asks about DuckLake → search the DuckLake index with `version = 'stable'`
- When unsure, omit the version filter to search across all versions.

### Search terms

If the input is a **natural language question** (e.g. "how do I find the most frequent value"), extract the key technical terms (nouns, function names, SQL keywords) to form a compact BM25 query string. Drop stop words like "how", "do", "I", "the".

If the input is already a **function name or technical term** (e.g. `arg_max`, `GROUP BY ALL`), use it as-is.

Use the extracted terms as `SEARCH_QUERY` in the next step.

## Step 4 — Ensure local cache is fresh

The cache lives at `$HOME/.duckdb/docs/CACHE_FILENAME` (where `CACHE_FILENAME` is `duckdb-docs.duckdb` or `ducklake-docs.duckdb` per Step 3).

First, ensure the directory exists:

```bash
mkdir -p "$HOME/.duckdb/docs"
```

Then check whether the cache file exists and is fresh (≤2 days old):

```bash
CACHE_FILE="$HOME/.duckdb/docs/CACHE_FILENAME"
if [ -f "$CACHE_FILE" ]; then
    MTIME=$(stat -f %m "$CACHE_FILE" 2>/dev/null || stat -c %Y "$CACHE_FILE")
    CACHE_AGE_DAYS=$(( ( $(date +%s) - MTIME ) / 86400 ))
else
    CACHE_AGE_DAYS=999
fi
echo "Cache age: $CACHE_AGE_DAYS days"
```

**If `CACHE_AGE_DAYS` ≤ 2** → skip to Step 5.

**Otherwise** (stale or missing) → fetch the index:

```bash
duckdb -c "
LOAD httpfs;
LOAD fts;
ATTACH 'REMOTE_URL' AS remote (READ_ONLY);
ATTACH '$HOME/.duckdb/docs/CACHE_FILENAME.tmp' AS tmp;
COPY FROM DATABASE remote TO tmp;
" && mv "$HOME/.duckdb/docs/CACHE_FILENAME.tmp" "$HOME/.duckdb/docs/CACHE_FILENAME"
```

Replace `REMOTE_URL` and `CACHE_FILENAME` per Step 3. If the fetch fails (network error), report the error and stop.

## Step 5 — Search the docs

```bash
duckdb "$HOME/.duckdb/docs/CACHE_FILENAME" -readonly -json -c "
LOAD fts;
SELECT
    chunk_id, page_title, section, breadcrumb, url, version, text,
    fts_main_docs_chunks.match_bm25(chunk_id, 'SEARCH_QUERY') AS score
FROM docs_chunks
WHERE score IS NOT NULL
  AND version = 'VERSION'
ORDER BY score DESC
LIMIT 8;
"
```

Replace `CACHE_FILENAME`, `SEARCH_QUERY`, and `VERSION` per Step 3. Remove the `AND version = 'VERSION'` line if searching across all versions.

If the user's question could benefit from both DuckDB docs and blog results, run two queries (one with `version = 'stable'`, one with `version = 'blog'`) or omit the version filter entirely.

## Step 6 — Handle errors

- **Extension not installed** (`httpfs` or `fts` not found): run `duckdb :memory: -c "INSTALL httpfs; INSTALL fts;"` and retry.
- **ATTACH fails / network unreachable**: inform the user that the docs index is unavailable and suggest checking their internet connection. The DuckDB index is hosted at `https://duckdb.org/data/docs-search.duckdb` and the DuckLake index at `https://ducklake.select/data/docs-search.duckdb`.
- **No results** (all scores NULL or empty result set): try broadening the query — drop the least specific term, or try a single-word version of the query — then retry Step 5. If still no results, tell the user no matching documentation was found and suggest visiting https://duckdb.org/docs or https://ducklake.select/docs directly.

## Step 7 — Present results

For each result chunk returned (ordered by score descending), format as:

```
### {section} — {page_title}
{url}

{text}

---
```

After presenting all chunks, synthesize a concise answer to the user's original question (`$@`) based on the retrieved documentation. If the chunks directly answer the question, lead with the answer before showing the sources.

© duckdb · MIT · duckdb/duckdb-skills

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

Все скиллы по теме «Данные и базы» →
convex-docs convex Проверяет установленную в проекте версию Convex и подтягивает актуальную документацию в markdown вместо устаревшего кода из памяти модели. CX Codex +1 36 100установок tailwind-4-docs Lombiq Скилл подтягивает локальный снимок документации Tailwind CSS v4 и помогает агенту отвечать по утилитам, конфигу и миграции с v3. CX Codex +1 17 600установок coding-agent-docs-optimization Samuel Berthe Готовит документацию SDK, API или протокола так, чтобы кодинг-агент собрал интеграцию с первого раза и без человека рядом. CX Codex +1 10 300установок docs-code-sample-standards Samuel Berthe Скилл задаёт правила для примеров кода в документации и проверяет уже опубликованные сниппеты по этим правилам, выдавая очередь правок. CX Codex +1 10 300установок platform-docs-get forcedotcom Тянет официальную документацию Salesforce и заставляет агента отвечать по ней, а не по чужим блогам. Полезен, когда страницы рендерятся через JS и обычный fetch возвращает пустую оболочку. CX Codex +1 6 500установок openai-docs официальный openai Скилл ищет актуальные материалы OpenAI и помогает отвечать по API, Codex, моделям и обновлению промптов с опорой на официальную документацию. CX Codex +1 6 100установок

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

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

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