Skills#
.earshot/skills/<name>/SKILL.md, or <config>/skills/<name>/SKILL.md. A single
<name>.md works too.
---
description: how we cut a release here
allowed-tools: read, grep, bash
---
Run `bun run release`, then …The system prompt carries only the index — name and description. The body is loaded when the model decides the task is one the skill covers, which is why a skill is not just more system prompt.
A skill is text, and text is not an action. It can describe running a
command; it cannot run one, and it cannot approve one. allowed-tools is
intersected with what the session already offers, so it only ever removes tools
— and it can never remove ask_user, since a skill that narrowed away the
ability to ask would switch off "ask rather than guess" by writing a list. The
narrowing is cleared when the turn ends.
A skill is named after its file, never after its frontmatter, and your own skills win a name collision with a project's. A repository adding a skill is one thing; a repository redefining one you wrote is another.
Slash commands#
.earshot/commands/<name>.md, or <config>/commands/<name>.md.
---
description: review a pull request
---
Review PR $1. Focus on $ARGUMENTS.Typing /name args expands the file and runs it as an ordinary prompt.
$ARGUMENTS is everything after the name; $1–$9 are the words. It is not a
second route to the tools: whatever the file asks for goes through the same turn
and the same gate as anything typed by hand.
/skills lists both skills and commands, with where each came from.