Install any skill in seconds. Free to start, no credit card required.
Get Started Free →basecamp/hey
Interact with HEY via the HEY CLI. Read and send emails, manage contacts, boxes, labels, collections, calendars, todos, habits, time tracking, and journal entries.
Passed 22 of 22 test cases with the skill, and 3 of 22 without it.
and 25 more in the full report
19 fixed3 passed either way0 still failing0 broke2 errored
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.8-flash on 10/21/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 19 test cases the skill fixed. Same model, same prompt, with and without the skill.
I want to know how many unknown senders are currently held in my HEY Screener queue waiting for clearance. Please check my account and return just the total numeric count.
| Checked | Without skill | With skill |
|---|---|---|
| Specifies the command hey screener list to query the HEY Screener queue. | Missed | Passed |
| Includes the --count flag to return a bare numeric total rather than full JSON output. | Missed | Passed |
The instructions your model reads when the skill loads.
CLI for HEY: mailboxes, labels, collections, email threads, contacts, replies, compose, calendars, todos, habits, time tracking, and journal entries.
MUST follow these rules:
--jq '<expression>' to filter or extract fields and --json for the full response. Never pipe to an external jq; --jq is built in and implies --json.hey auth status --json when an explicit authentication check is needed (it reports stored credentials and does not contact HEY). Never run hey auth login unattended; use it only for interactive recovery with the user present.--html writes the original HTML of hey thread read, hey journal read, and a contact's private note (hey contact show or hey contact note show) to a pipe or file; a terminal is refusedhey account list --json, then --account <id|all> when a task must target one accounthey config trust-local without the user's explicit approval--jq filters the full JSON success envelope, so result data is under .data. String results print as plain text; objects and arrays print as formatted JSON. Use --quiet --jq when the expression should run against result data directly. Errors retain their complete structured envelope. Commands with dedicated raw output (auth token, shell-completion generate, setup, skill, tui, --version, and timetrack export without --output) reject --jq. hey watch writes one raw JSON event per line with no envelope and does not apply --jq.
hey box list --jq '.data[] | {id, name}'
hey search "quarterly planning" --jq '.data[].topic_id'
hey box list --quiet --jq '.[].name'
An empty result is an empty array rather than null, so .data[] is safe to run against a
listing that found nothing.
For the two commonest shapes there is no need for an expression at all: --ids-only prints
one ID per line and --count prints a bare number on stdout. Both answer for what was read,
which is the first page unless --all (or --limit) reads more, and not every listing warns
on stderr that more pages exist — hey screener list --count is the exception and counts
the whole queue. Both need list data, so they work on the listings: every list command,
the thread listings (hey box view, hey label view, hey collection view, hey set-aside view,
hey set-aside group view, hey bundle view, hey contact threads, hey bubble list),
hey workflow view, hey search, hey screener history, hey event day, hey event week,
hey timetrack categories, hey attachment list and hey thread read (its entries, read
from the index without fetching bodies). On the thread listings they count and list the
postings, not the box, label or contact around them.
test cases passed, vs 3 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.