~/.hiroshi/skills/. Skills can be written in Python, Bash, PowerShell, or any language that reads from stdin and writes to stdout. Hiroshi picks them up automatically the next time it starts — no configuration changes required.
Creating a skill
Create a skill folder
Create a new directory inside
~/.hiroshi/skills/ using the name you want the agent to call:Create a SKILL.md manifest
Inside the folder, create a The body text below the frontmatter is available for additional context but the three frontmatter fields are what Hiroshi reads at registration time.
SKILL.md file with YAML frontmatter. Hiroshi parses this file to register the skill name, description, and expected input schema:Create the executable script
Add an executable script to the same folder. The filename can be anything — Hiroshi picks up the first non-
SKILL.md file it finds. Give the file an extension that matches the runtime you want to use (.py, .sh, .ps1, .bat/.cmd), or place a compiled binary with no extension.For example: ~/.hiroshi/skills/my_skill/my_skill.pySKILL.md format
TheSKILL.md frontmatter block must open and close with ---. Hiroshi reads three fields:
| Field | Required | Description |
|---|---|---|
name | Yes | The identifier the agent uses to call the skill. Must match the folder name. |
description | Yes | Shown to the agent as the tool description. Write this carefully — the agent uses it to decide when to call the skill. Be specific about what the skill does and what it returns. |
schema | Yes | A JSON object (as a string) describing the input parameters the script expects. The agent uses this to construct valid arguments. |
name is missing or empty, Hiroshi falls back to the folder name as the skill name.
Script interface
Your script communicates with Hiroshi through standard input and output:- Input — Hiroshi writes the arguments as a JSON object to the script’s stdin. Read and parse it with
json.loads(sys.stdin.read())(Python) orjq(Bash). - Output — Write results to stdout. Everything written to stdout is captured and returned to the agent.
- Exit codes — A non-zero exit code is treated as an error. The agent will receive both the stdout and stderr output along with the error status.
- Timeout — Scripts have a 10-second execution timeout. If your script does not exit within 10 seconds, Hiroshi kills the process and reports a timeout error to the agent.
- Working directory — The script’s working directory is set to the
sandbox_pathdefined in your config (~/.hiroshi/workspaceby default).
Complete Python example
The following skill counts the words in a text string. It demonstrates the full structure: aSKILL.md manifest paired with a Python script that reads JSON from stdin and writes a plain-text result to stdout.
SKILL.md
word_count.py
Bash skill example
Bash skills work identically — read JSON from stdin if you need parameters, or skip stdin entirely for skills that take no input.SKILL.md
disk_usage.sh