Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jxoesneon/Ciel --skill devin-conversation-recoverygit clone --depth 1 https://github.com/jxoesneon/CielWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jxoesneon/ciel/devin-conversation-recovery)<a href="https://agentmods.dev/skills/jxoesneon/ciel/devin-conversation-recovery"><img src="https://agentmods.dev/badge/skills/jxoesneon/ciel/devin-conversation-recovery/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jxoesneon/ciel/devin-conversation-recovery"><img src="https://agentmods.dev/badge/skills/jxoesneon/ciel/devin-conversation-recovery.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00020 | $0.00736 |
| Opus 5.5 | $0.00008 | $0.00294 |
| Sonnet 5.5 | $0.00004 | $0.00147 |
| Haiku 4.5 | $0.00002 | $0.00074 |
Grade A, and why
devin-conversation-recovery scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 20d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 74 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Devin Conversation Recovery
Devin runs as an ACP provider inside Windsurf ("Devin Local"). Conversations are NOT in Hermes's session DB — they live in two SQLite stores on disk:
-
Titles/session metadata:
~/Library/Application Support/Devin/User/globalStorage/state.vscdb→
ItemTablekeyswindsurf.acp.sessioninfo.session.*and thewindsurf.acp.messageStore.indexkey mapping sessionId → message-db uuid. -
Message bodies:
~/Library/Application Support/Devin/User/acp-messages/<uuid>.db→ table
messages(position, kind, payload); payload is JSON with content as streaming text chunks, plustool_callrows carryingrawInput(commands, file reads) and exit codes.
Quick path: use the helper script
Prefer the Rust twin ~/.ciel/bin/ciel-convo (same arguments); the Python
find_devin_convo.py remains as fallback while the parity soak runs.
ciel-convo --list
ciel-convo "blender-mcp" # titles + first messages
ciel-convo "search text" --deep # grep ALL payloads (slow)
ciel-convo --extract <uuid> -o /tmp/convo.txt
# fallback: python <skill-dir>/scripts/find_devin_convo.py <same args>
The extract output is plain text (=== [position] kind sections): agent thoughts/
messages joined from streaming chunks, tool commands with $ cmd (exit N), and
truncated tool output. Full transcripts can be 1M+ chars — dump to a file and
page through with read_file rather than printing.
Manual procedure (if script unavailable)
- List sessions:
import sqlite3, json
con = sqlite3.connect("~/Library/Application Support/Devin/User/globalStorage/state.vscdb")
rows = con.execute("select key,value from ItemTable where key like 'windsurf.acp.sessioninfo.session.%'").fetchall()
idx = json.loads(con.execute("select value from ItemTable where key='windsurf.acp.messageStore.index'").fetchone()[0])
# idx["acp/devin-cli/<name>"]["uuid"] gives the acp-messages db filename
- Search bodies across all dbs: iterate
User/acp-messages/*.db,
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 20d ago Changed · +4 lines d101eb99ed90
- 1mo ago Changed · +12 lines · -14 tokens per session 52df91c26b4e
- 1mo ago Changed b772934ddc72
- 1mo ago First seen · 58 lines · 34 tokens per session scan A 01026ca8486a
devin-conversation-recovery is a skill published in the GitHub repository jxoesneon/Ciel (1 stars, last pushed 4d ago), licensed Apache-2.0. It adds 20 tokens to every session and 736 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
build-personal-brain
Create, resume, validate, connect, or maintain a private cross-project memory for AI assistants. Use when a person asks to build a personal memory from local work folders and past assistant conversations, continue an interrupted memory audit, connect an existing memory to another local assistant, verify that the…
squad-bootstrap
Skill de inicialização da squad. Faz a varredura do projeto e popula a memória técnica e de negócios em memories/. ATENÇÃO - SÓ DEVE ser executada se houver solicitação explícita do usuário ("instalar a squad", "fazer setup inicial", "bootstrap do projeto") ou logo após o instalador (install.sh) ter configurado a…
compound
Persistência de aprendizados nas memórias vivas ao final de cada ciclo. Use para "atualizar memória", "guardar aprendizados" ou "sincronizar contexto do projeto". Executada pelo Tech Lead após o PO definir Status entregue.
macrodata-onboarding
Guide new users through macrodata setup. Creates identity, human profile, and workspace files. Use when getcontext returns isFirstRun true, or user asks to set up their profile.
macrodata-distill
Extract distilled actions and facts from today's conversations. Spawns sub-agents per conversation to avoid context blowup.
macrodata-memory-maintenance
End of day memory maintenance. Runs distillation, updates state files, prunes stale info. Runs in background with no user interaction.