~/.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
1
Create a skill folder
Create a new directory inside
~/.hiroshi/skills/ using the name you want the agent to call:2
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:3
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.py4
Restart Hiroshi
Skills are loaded at startup. Restart Hiroshi to pick up the new skill, and it will be available to the agent immediately.
SKILL.md format
TheSKILL.md frontmatter block must open and close with ---. Hiroshi reads three fields:
If
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