Two Zed agent skills for working with Zed's local agent thread
history. These are designed to be installed together — zed-thread-move
depends on zed-sqlite for Zed profile autodetection.
Search your Zed agent thread history by keyword or regex. Handles zstd decompression so you can grep over compressed message blobs.
When to use: "What did we discuss about X?" — find old agent conversations by content (messages, tool calls, summaries).
Key features:
- Autodetects running Zed profiles (via
/proccmdline parsing) - When multiple profiles are active, searches all of them
- Handles both
zstdPython module and CLI fallback - Safe to run while Zed is open (opens DB in read-only mode)
Move or import agent threads between projects or Zed profiles without hand-writing SQL.
When to use:
- "Move this thread to this project",
- "Move all threads from project A to project B", or
- "Import threads from this other Zed installation."
Key features:
- Two-phase workflow:
plan(read-only) →apply(with backup) - Handles all three Zed databases (
threads.db,0-dev/db.sqlite,0-stable/db.sqlite) - Properly handles archived threads and cross-profile imports
- Automatic backup before writing (zipped timestamped archive)
STOP_AND_ASKguard on ambiguous matches — never overwrites silently
zed-thread-move ──depends on──▶ zed-sqlite
│ │
│ detect_active_profile() │ search.py --show-profiles
│ zed_running() │ search.py --running
│ │
▼ ▼
move.py shells out to search.py
zed-thread-move/scripts/move.py does not implement its own profile or
process detection. Instead it shells out to
zed-sqlite/scripts/search.py with --show-profiles and --running, resolved
relative to its own path (sibling-skill layout):
~/.agents/skills/
├── zed-sqlite/
│ └── scripts/
│ └── search.py ◀── owns canonical /proc-based detection
└── zed-thread-move/
└── scripts/
└── move.py ◀── calls ../zed-sqlite/scripts/search.py
- Do not reintroduce
ps/pgrep-based detection inmove.py. Fix detection bugs insearch.pyonly. - The Zed binary basename set is
{"zed"}(notzed-editor). The/proccmdline parser matches on this set — avoid path regexes. --show-profilesalways returns a best-guess default (XDG) even when no Zed is running.move.pyuses this to surface missing databases viaenv/applyrather than fatally erroring.
- Linux (reads
/procfor profile detection) - Python ≥ 3.10
uv(recommended) — handleszstandardinstallation automatically via PEP 723 script metadata. Alternatively:pip install zstandard, or thezstdCLI on$PATH.
git clone https://github.com/dandv/zed-skills ~/.agents/skills/zed-skillsOr symlink the individual skills into ~/.agents/skills/:
ln -s /path/to/this/repo/zed-sqlite ~/.agents/skills/zed-sqlite
ln -s /path/to/this/repo/zed-thread-move ~/.agents/skills/zed-thread-moveBoth skills must be present for zed-thread-move's autodetection to work.
If you only need search, you can install just zed-sqlite.
Apache 2.0 — see LICENSE.md.