Почему нетривиально: здесь легко смешать полнотекст и vector/RAG в один слой и потерять семантику search_*; этот скилл разводит Meilisearch и Qdrant по ролям, фиксирует parity-gate и не даёт выключить Elasticsearch до реального подтверждения эквивалентности.
Замена тяжёлого ES на Meilisearch для полнотекста (docs/MIGRATION_AUDIT.md Фаза 7, §9.1). Vector/RAG — отдельно в Qdrant, не через этот слой.
@elastic/elasticsearch 8.4, smarty-elastic) -> Meilisearch (meilisearch JS-клиент).smarty-dialog). Каталог имеет qdrant/skills — использовать как референс.smarty-elastic — переписать индексацию под Meilisearch API.Searchable и search_* tools в tools/executor.js (fuzzy search, groupId-фильтр — сохранить семантику).search_* tools (contacts, projects, …): Meili даёт эквивалент ES до переключения.search_* (contacts, projects, tasks, …), включая fuzzy + groupId.docs/MIGRATION_AUDIT.md (Фаза 7, §9.1) · docs/AGENT_SKILLS_ADOPTION.md (закрывает гэп Meilisearch) · каталожный qdrant/skills.