previous-conversations

SkillAI & models

Use when the user references a previous conversation, asks you to continue earlier work, or you need to look up what was discussed before. Includes subagent conversations.

Use previous-conversations in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add previous-conversations and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the previous-conversations skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

previous-conversationsStart free

What this skill tells your AI

The instructions your AI receives, as published by boldsoftware/shelley in skills/builtin/previous-conversations/SKILL.md and read by Ahel’s review.

Shelley stores top-level and subagent conversation history in a SQLite database.

First, locate the database:

DB="${SHELLEY_DB:-$HOME/.config/shelley/shelley.db}"

List recent conversations

sqlite3 "$DB" "SELECT conversation_id, slug, parent_conversation_id, json_extract(conversation_options, '$.kind') AS kind, datetime(created_at, 'localtime') as created, datetime(updated_at, 'localtime') as updated FROM conversations ORDER BY updated_at DESC LIMIT 20;"

Get messages from a conversation

Replace CONVERSATION_ID with the actual ID:

sqlite3 "$DB" "SELECT CASE m.type WHEN 'user' THEN 'User' ELSE 'Agent' END, substr(json_extract(content.value, '$.Text'), 1, 500) FROM messages AS m, json_each(m.llm_data, '$.Content') AS content WHERE m.conversation_id='CONVERSATION_ID' AND m.type IN ('user', 'agent') AND json_extract(content.value, '$.Type') = 2 AND trim(COALESCE(json_extract(content.value, '$.Text'), '')) != '' ORDER BY m.sequence_id, CAST(content.key AS INTEGER);"

Get a conversation's subagents

A subagent ID, such as one shown in a transcribed by subagent marker, is itself a CONVERSATION_ID. Use it directly with the messages query above.

To discover child IDs from a parent, replace PARENT_CONVERSATION_ID below. Shelley links child conversations—including ordinary subagents and specialized workers—through parent_conversation_id; kind and archived help distinguish them.

sqlite3 "$DB" "SELECT conversation_id, slug, json_extract(conversation_options, '$.kind') AS kind, archived, datetime(created_at, 'localtime') as created, datetime(updated_at, 'localtime') as updated FROM conversations WHERE parent_conversation_id='PARENT_CONVERSATION_ID' ORDER BY created_at;"

Use a returned conversation_id with the messages query above. Repeat the child query with that ID to follow nested subagents.

Search conversations by slug

sqlite3 "$DB" "SELECT conversation_id, slug FROM conversations WHERE slug LIKE '%SEARCH_TERM%';"

Signals

GitHub stars
676
Forks
111
Last commit
Oct 2026
Advanced
Item type
skill
Key
previous-conversations
Source
github.com/boldsoftware/shelley