AgentSkillsCN

reply-tracker

自动管理“待回复”与“等待回复”标签的回复追踪系统

SKILL.md
--- frontmatter
name: reply-tracker
description: Reply tracking system that manages "To Reply" and "Awaiting Reply" labels automatically

Reply Tracker

Reply Tracker (Reply Zero) helps users track which emails need replies and which emails they're awaiting replies on. It automatically manages Gmail/Outlook labels based on email flow.

Core Components

Database Models:

  • ThreadTracker - stores tracking state and timestamps
  • EmailAccount.outboundReplyTracking - enables outbound reply detection
  • ActionType.TRACK_THREAD - action that removes "Awaiting Reply" labels

Labels:

  • "To Reply" - emails that need your response
  • "Awaiting Reply" - emails you sent that need their response

How It Works

Inbound Flow (Receiving Emails)

  1. Adding "To Reply": Regular rules with LABEL action add "To Reply" labels
  2. Removing "Awaiting Reply": Rules with TRACK_THREAD action remove "Awaiting Reply" labels when replies arrive

Outbound Flow (Sending Emails)

  1. Removing "To Reply": Always removes "To Reply" label when you reply (if outboundReplyTracking enabled)
  2. Adding "Awaiting Reply": AI decides if your sent email needs a response and adds label accordingly

Settings

Users control this via one unified setting:

  • "Reply tracking": Controls both outbound tracking (outboundReplyTracking) and automatically adds TRACK_THREAD actions to "To Reply" rules

Key Files

  • apps/web/utils/reply-tracker/outbound.ts - handles sent emails
  • apps/web/utils/reply-tracker/inbound.ts - handles received emails
  • apps/web/utils/ai/actions.ts - executes TRACK_THREAD action

Future Improvements

The current implementation works but has some architectural complexity that could be cleaned up:

  • TRACK_THREAD action is hidden from users but managed via settings
  • Two separate systems (outbound tracking + TRACK_THREAD actions) that need to stay in sync
  • Hard-coded label names ("To Reply", "Awaiting Reply") - users can't customize these
  • Could potentially be simplified to a more unified label-based approach in the future
  • May want to support todos