reply-debtlisted
Install: claude install-skill getedgehq/skills
# Reply Debt
## What it does
Reads recent inbound mail, removes everything that is not a person waiting on you,
and ranks what is left by wait time. The output is a short list: who, about what,
how long they have waited.
No language model reads the mail. Every include and exclude is a substring rule in
the config, so a wrong answer is a rule you can find and change.
## Prerequisites — read this before you start
**This skill is not credential-free.** It needs access to a mailbox:
| backend | needs | notes |
| --- | --- | --- |
| `gmail-api` | `GMAIL_ACCESS_TOKEN` in the environment | OAuth access token, `gmail.readonly` scope. Add `gmail.send` only if the user wants `--send`. |
| `composio` | `COMPOSIO_API_KEY` in the environment, plus `--connection-id` | For a Composio-managed Gmail connection. The connection id is an identifier, not a secret. |
| `fixture` | nothing | A local JSON file of messages. No network. |
Read the token from the environment only. Never pass it as a command-line
argument, never write it into a config file, never echo it.
If no mailbox is connected, use `--backend fixture` and say plainly that the
mailbox part is unverified. Do not describe a fixture run as a run against real
mail.
## How the filtering works
1. Fetch `in:inbox newer_than:{days}d from:me` and remember those thread ids.
Anything you already replied to in the window is not debt.
2. Fetch `in:inbox newer_than:{days}d -from:me`.
3. Drop a message when the sender matches `skip_se