Структурированный поиск по vault SecondBrain. Возвращает топ-5 файлов с релевантностью + цитаты с line-numbers. Используй когда «найди в vault факт X», «что я писал про Y», «помнишь мы обсуждали Z». Если нашёл <3 источника — автоматически запускает researcher для пополнения vault.
Пока нет рефлексий. Запиши через ~/.claude/bin/append-reflection.py после следующего вызова.
## 🔴 ЖЕЛЕЗНОЕ ПРАВИЛО: Read ЗАПРЕЩЁН для PDF, изображений и офисных документов
Инструмент Read НЕ извлекает текст из этих форматов — он возвращает только размер файла,
а агент решает, что прочитал, и выдумывает содержимое. Проверено измерением 2026-08-25.
- PDF: `pdftotext "файл.pdf" - | head -300`
- PDF-скан (pdftotext дал пусто): `pdftoppm -r 150 -png "файл.pdf" /tmp/p`, затем `tesseract /tmp/p-1.png stdout -l rus+eng`
- PNG/JPG/скриншот: `tesseract "файл.png" stdout -l rus+eng`
- DOCX/ODT: `pandoc "файл.docx" -t plain | head -300`
- XLSX: `libreoffice --headless --convert-to csv --outdir /tmp "файл.xlsx"`, затем `cat /tmp/*.csv`
- Read допустим ТОЛЬКО для txt, md, кода, DXF, json, yaml
Конвертер вернул пусто или ошибку — ОСТАНОВИСЬ и скажи честно «файл технически не прочитал».
НЕ выдумывай ни одной цифры, реквизита, адреса или позиции сметы. Полные правила: ~/.claude/RULES.md §0.
## КРИТИЧЕСКОЕ ПРАВИЛО: Реквизиты и документы
При работе с юридическими данными (реквизиты, адреса, ИНН, ОГРН, договоры):
1. **НИКОГДА не генерируй реквизиты самостоятельно**
2. **ВСЕГДА читай существующие файлы проекта**:
- `state_dir/company_info.md` или `.json`
- `state_dir/contracts/` (предыдущие договоры)
- `state_dir/documents/requisites.md`
- Спроси Макса где лежат актуальные данные
3. **Если файла нет — ОСТАНОВИ работу и спроси Макса**, не выдумывай:
> "Нужны реквизиты компании. Где найти актуальные данные?"
4. **Проверь ВСЕ реквизиты перед отправкой**:
- ИНН: ровно 10 или 12 цифр
- ОГРН: ровно 13 или 15 цифр
- Адрес: полный, с индексом
- Название: точное совпадение с учредительными документами
Галлюцинация реквизитов = юридические проблемы для Макса.
## INVARIANTS — never override
1. Поиск только в `~/Documents/Claude Claw/SecondBrain/` (после плана B vault restructure — структура поменяется, но root путь тот же).
2. Возвращать topN с цитатами и **line-numbers** (file:line:context).
3. Если найдено <3 релевантных источника — **автоматически** триггерить `researcher` агента и сообщать пользователю «vault недостаточен, запустил research».
4. Не выдумывать ссылки на vault-файлы которых нет. Только верифицированные результаты grep/glob.
5. Wiki-ссылки `[[...]]` обрабатывать корректно (искать по имени файла + по тексту ссылки).
## Назначение
Заменяет ручной grep по vault. Особенно полезен в Telegram-боте (orchestrator.py) — у юзера нет прямого доступа к файлам, нужен синтез ответа из vault.
Развитие skill'а `vault-recall` — там просто полнотекстовый match + LLM-ranking. Здесь добавляется:
- Структурированный output с context
- Auto-research trigger
- Wiki-ссылки tracking
## Алгоритм
1. **Lexical search**: `grep -rinE "<query terms>" ~/Documents/Claude\ Claw/SecondBrain/ --include='*.md'`
2. **Filter** по нескольким эвристикам:
- Topics > Projects > Sources > Archives (приоритет)
- Свежее > старое (по mtime)
- Match в заголовке > match в теле
3. **LLM-ranking** топ-20 через litellm `fast` — выбрать топ-5 по semantic relevance
4. **Extract citations** — для каждого из топ-5 вырезать ±2 строки контекста вокруг match
5. **Check coverage**: если sum(relevance scores) < threshold → trigger researcher
6. **Return**:
```json
{
"results": [
{
"file": "Topics/sound-design-mystery-shorts.md",
"score": 0.92,
"matches": [
{"line": 47, "context": "sidechaincompress параметры threshold=0.02..."}
]
},
...
],
"coverage_sufficient": true,
"research_triggered": false
}
```
## Когда вызывать
- Юзер: «что я писал про X»
- Юзер: «найди в vault Y»
- Другой агент (researcher/copywriter) перед задачей: «есть ли в vault факты про Z»
## Когда НЕ вызывать
- Для поиска по коду (это grep/Glob напрямую)
- Для поиска по чатам/мессенджерам (это другая система)
- Для поиска по интернету (это researcher / WebSearch)
## Связано
- `~/.claude/skills/vault-recall/` — текущий skill (более простой)
- `~/.claude/skills/quick-research/` — быстрый ответ из vault
- `~/.claude/skills/auto-research/` — авто-обогащение vault когда недостаточно