Skill: Recover Overwritten Notes (восстановление затёртых заметок)
Trigger: пользователь говорит «затёр заметку», «перезаписал файл», «потерял текст», «заметка стала пустой / короче», «верни старую версию», «восстанови заметку», "note got overwritten", "restore previous version"
Зачем
trip2g хранит каждую версию каждой заметки. Если заметку случайно перезаписали (контент пропал, текущая версия неправильная) — старый текст не потерян. Достаём любую прошлую версию двумя admin-GraphQL запросами через MCP my_brain_trip2g.
Требования
Нужны admin-инструменты на API-ключе (graphql_request / graphql_introspection в MCP my_brain_trip2g).
Проверь, что инструмент my_brain_trip2g: graphql_request доступен. Если его нет — попроси пользователя включить Enable MCP admin tools на ключе в Admin → API Keys (см. instructions/request_admin_rights), затем продолжай.
Шаг 1. Найди перезапись
Список всех сохранённых версий заметки (новые сверху). path — путь заметки в vault относительно secondbrain/, с .md.
my_brain_trip2g: graphql_request {
query: "query($p: String!) {
admin {
noteVersionHistory(filter: { path: $p }) {
totalCount
nodes { versionId version contentLength createdAt }
}
}
}",
variables: { "p": "folder/my-note.md" }
}
Смотри contentLength по датам. Резкое падение (напр. 4821 → 318 байт) = момент перезаписи. Версия перед падением — последняя хорошая копия. Запомни её versionId.
Шаг 2. Достань контент
my_brain_trip2g: graphql_request {
query: "query($id: Int64!) {
admin {
noteVersion(versionId: $id) { versionId path version content createdAt }
}
}",
variables: { "id": 171 }
}
content — сырой markdown нужной версии.
Шаг 3. Верни в заметку
Запиши content обратно в файл заметки:
terminal: cat > "/opt/data/secondbrain/folder/my-note.md" <<'EOF'
<сюда content из noteVersion>
EOF
Синк в trip2g автоматический (session hook после ответа). Дай пользователю ссылку {TRIP2G_URL}/folder/my-note.
Пагинация
Для заметок с большой историей — limit и offset (по умолчанию 50, totalCount = сколько всего версий):
noteVersionHistory(filter: { path: "folder/my-note.md", limit: 20, offset: 40 })
Важно
- Поля схемы:
noteVersionHistory→nodes { versionId version contentLength createdAt },totalCount;noteVersion(versionId)→{ versionId path version content createdAt }. version— порядковый номер (1, 2, 3…),versionId— глобальный id версии (его передаём вnoteVersion).- Если пользователь не помнит точный путь — сперва найди заметку через
my_brain_trip2g: searchили листинг/opt/data/secondbrain/. - Залогируй восстановление в daily note: что вернул, из какой версии, дата перезаписи.