CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

agent-inbox

Read and answer the messages people send your agent, and reach the person you're working for, via the Agent Inbox CLI (`npx @agentinbox/cli inbox list|show|send|reply`). Use it to pick up unread conversations in background/autonomous/scheduled runs, and when you need a decision, approval, or notification and no one is watching this terminal. Not for routine questions the current chat user can just answer next turn.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

85%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

Highly actionable and operationally rigorous: every command is executable, exit codes are turned into branching logic, and risky actions are gated behind approvals with explicit error-recovery loops. The weaknesses are token efficiency — some redundancy across sections — and progressive disclosure: a 388-line monolith whose setup and channel troubleshooting could be split into one-level-deep reference files.

Suggestions

Move the setup, channel-connect, keyless-demo, and paused-state troubleshooting (roughly the first 130 lines) into a one-level-deep reference file (e.g. references/setup.md), keeping SKILL.md to the core inbox workflow and a pointer to it.

Merge the two adjacent keyless-demo paragraphs into one, and consolidate the `--to`/contact-invite semantics that currently appear in the setup, contacts, and useful-flags sections into a single place.

Replace the three verbatim quoted error-message blocks with their exit codes plus a one-line recognition cue, since the exit-code table already establishes 'branch on these, don't parse prose'.

DimensionReasoningScore

Conciseness

The body assumes Claude's competence throughout — no filler explaining what Telegram, Slack, or inboxes are — and nearly every line is operational (exit codes, flags, edge cases). But there are minor trims available: the keyless-demo setup is covered in two adjacent paragraphs ("A no-account (keyless) setup gets an email inbox automatically..." then "The no-account (keyless) setup is a free demo..."), `--to`/contact semantics are restated across three sections (setup, contacts, useful flags), and three full error messages are quoted verbatim despite the later "branch on these, don't parse prose" exit-code guidance. That places it at the efficient-with-minor-overexplanation anchor, not the every-token-earns-its-place level 5.

4 / 5

Actionability

Commands are copy-paste ready and cover the common cases end to end: send/reply/ask/approve/choose invocations, the unattended loop (list → show → reply → resolve) with exact flags, a working exit-code branching shell snippet, and documented `--json` shapes for structured parsing. This matches the fully-executable/copy-paste-ready anchor, above level 4 which permits gaps in coverage.

5 / 5

Workflow Clarity

The unattended loop is given as an explicit sequenced recipe, with validation checkpoints throughout: check unread before writing to a contact, read a conversation when the `unreadBefore` warning fires, branch on exit codes (10 denied / 11 still pending / 1 error), and "check contacts before coordinating between people". Error-recovery feedback loops are present (re-running `channel add` resumes at the missing step, retry delivery once the contact connects), and the "Habits that keep the inbox honest" section functions as a checklist. This matches the explicit-validation/feedback-loop/checklist anchor rather than level 4's minor-validation-gaps.

5 / 5

Progressive Disclosure

The 388-line body is a single self-contained file with no reference files at all, and roughly a third of it (the setup, channel-connect, keyless-demo, and paused-state troubleshooting) is detailed operator-facing material that could live one level deep in a reference file, keeping SKILL.md as a leaner overview. Structure is genuinely good — clear headers, easy navigation — so it sits above level 2's headerless wall of text, but the all-inline placement of content that would benefit from being separate fits the level-3 anchor better than level 4, which expects content appropriately split across files.

3 / 5

Total

17

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: concrete actions tied to the actual CLI command, an explicit use-when clause with natural trigger phrases, and a sharp negative-scope boundary. The only gap is that a handful of natural trigger phrasings live in the frontmatter triggers list rather than the description text itself.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "Read and answer the messages people send your agent", "reach the person you're working for", "pick up unread conversations" — and grounds them in the exact invocation ("`npx @agentinbox/cli inbox list|show|send|reply`"). This matches the anchor for multiple specific concrete actions with comprehensive coverage, and stays above the level-4 anchor (which tolerates coverage gaps) since read, answer, reach, and notification flows are all named.

5 / 5

Completeness

Both halves are explicit: "what" is "Read and answer the messages people send your agent, and reach the person you're working for, via the Agent Inbox CLI", and "when" is spelled out as "Use it to pick up unread conversations in background/autonomous/scheduled runs, and when you need a decision, approval, or notification and no one is watching this terminal". It even adds a negative scope clause ("Not for routine questions the current chat user can just answer next turn"), matching the anchor requiring both what and when with concrete trigger phrases — well above level 4, where "when" is only loosely specified.

5 / 5

Trigger Term Quality

Natural phrases a user would actually say are present — "unread conversations", "background/autonomous/scheduled runs", "need a decision, approval, or notification", "no one is watching this terminal" — but a few common variants (e.g. "notify when done", "ask the operator", "check the inbox") appear only in the frontmatter triggers list, not the description itself. Good coverage with a few natural terms missing fits the level-4 anchor rather than the comprehensive level-5 one.

4 / 5

Distinctiveness Conflict Risk

The description carves out a clear niche (an agent-facing inbox CLI on Telegram/Slack/email) with triggers like "unread conversations" and "no one is watching this terminal" that no adjacent skill (chat, notifications, deployment) would plausibly claim. The explicit "Not for routine questions..." boundary further reduces conflict risk, fitting the clear-niche/minimal-conflict anchor rather than the minor-overlap level 4.

5 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

novuhq/novu

Path

packages/agentinbox/src/skills/content/agent-inbox/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.