Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install vivekkarmarkar-claude-code-os-skills-thread-trackergit clone https://github.com/VivekKarmarkar/claude-code-os.gitcp claude-code-os/SKILL.MD ~/.claude/skills/vivekkarmarkar-claude-code-os-skills-thread-tracker/SKILL.md---
name: thread-tracker
description: Track email thread state — which messages have been replied to, per-thread context, and conversation history. Used by email-reply-all to avoid re-replying to old messages.
triggers:
- thread tracker
- track threads
- email state
---
# Thread Tracker — Persistent Email Thread State
You maintain a JSON state file that tracks which email messages have been replied to and stores per-thread context.
## State File
Location: `~/.claude/skills/thread-tracker/state/threads.json`
### Schema
```json
{
"threads": {
"<threadId>": {
"subject": "Re: ...",
"last_replied_message_id": "<gmail message id>",
"last_replied_at": "2026-03-22T01:00:00Z",
"correspondent": "someone@gmail.com",
"correspondent_name": "Name",
"language": "en",
"persona": "default",
"message_count": 5,
"our_reply_count": 3
}
},
"replied_message_ids": ["id1", "id2", "id3"]
}
```
## Operations
### Check if a message has been replied to
```python
python3 ~/.claude/skills/thread-tracker/scripts/tracker.py check <message-id>
# Returns: "replied" or "unreplied"
```
### Mark a message as replied
```python
python3 ~/.claude/skills/thread-tracker/scripts/tracker.py mark <message-id> <thread-id> <subject> <correspondent-email> [--language en] [--persona default]
```
### Get all unreplied message IDs from a list
```python
python3 ~/.claude/skills/thread-tracker/scripts/tracker.py filter-unreplied <id1> <id2> <id3> ...
# Returns: space-separated list of unreplied IDs
```
### Get thread context
```python
python3 ~/.claude/skills/thread-tracker/scripts/tracker.py context <thread-id>
# Returns: JSON with thread metadata (language, persona, last reply time, etc.)
```
### Update thread language
```python
python3 ~/.claude/skills/thread-tracker/scripts/tracker.py set-language <thread-id> <language-code>
```
## Integration
This skill is called by:
- **email-reply-all**: To filter unreplied messages and mark them after sending
- **email**: To check thread context before composing replies
- **email-language-detect**: To persist detected language per thread