Your first skill
Here's the shape of the smallest useful skill — a declarative one, no code required. This page is a taste; the full tutorial in the ari-skills repo walks through every step in about fifteen minutes.
The manifest
A declarative skill is one file: skills/<slug>/SKILL.en.md. It's a Markdown file with YAML frontmatter describing the skill, followed by a short body:
---
name: coin-flip
description: Flips a coin and returns heads or tails. Use when the user asks to flip a coin, toss a coin, or wants a heads-or-tails answer.
license: MIT
metadata:
ari:
id: dev.heyari.coin-flip
version: "0.1.0"
engine: ">=0.1"
author: Your Name <you@example.com>
languages: [en]
matching:
patterns:
- keywords: [flip, coin]
weight: 0.95
- keywords: [toss, coin]
weight: 0.95
declarative:
response_pick: ["Heads.", "Tails."]
---
# Coin Flip
Flips a coin. "flip a coin" → "Heads." or "Tails."namematches the directory name exactly.metadata.ari.idis a reverse-DNS identifier,dev.heyari.<slug>for skills in this taxonomy.metadata.ari.engineis required — it's the version range of the Ari engine your skill supports. Without it, the manifest won't load.matching.patternsare the fast path: every keyword in a pattern must appear in the utterance for that pattern to fire.declarative.response_pickis a list Ari picks one line from at random.
Patterns match normalised input
Before matching, Ari lowercases the input and expands contractions — "what's" becomes "what is", apostrophes disappear. So keywords must always be lowercase and apostrophe-free, or they can never match. Write whats, not what's; flip, not Flip.
Try it, then open a PR
Once your manifest is written, ./tools/validate skills/<slug>/ checks it against the schema, and ./tools/sideload-android skills/<slug>/ lets you try it on a real device. Fork the repo, add your skill, validate it, and open a pull request — a maintainer reviews, and on merge it's signed and published automatically.
For the full walkthrough — including router examples, specificity, and what makes a good description — see the canonical tutorial:
ari-digital-assistant/ari-skills/docs/tutorial-declarative.md