What problem does it solve? Slack users flag messages with emoji reactions expecting follow-up work, but those signals are easy to miss or handle inconsistently. This Skill turns pending emoji reactions into deterministic actions — replies, drafts, silent context saves, or quest adoption — with a visible lifecycle so nothing is lost or double-processed. ## Core Features & Use Cases - Reaction role resolution: Reads the configured emoji mapping (process, draft, save, adopt, loading, done) from reaction_config.py so custom .env mappings are always respected. - Three-state lifecycle: Advances each actioned message from trigger to loading to done via react-lifecycle.py advance, guaranteeing only one lifecycle emoji is ever visible. - Four action behaviors: process replies in-thread, draft creates a compose-box draft, save silently archives context into state/context-memory/, and adopt attaches the thread to its owning quest's watch list. - Ledger-based acknowledgment: Every (emoji, msg_ts) pair is acked as handled, nothing_to_do, or blocked so unacked items resurface on the next triage tick. - Use Case: A teammate reacts with the process emoji on a customer question thread; the Skill reads the thread, researches an answer, posts the reply through the sanctioned send surface, swaps the emoji to done, and records the timestamp so it is never re-processed. ## Quick Start When dispatched with the reactions target, read state/triage/pending_reactions.json and handle each pending emoji reaction according to its configured role.