Skip to Content

A Skill is a written procedure, not an app you install

Every new conversation starts blank. Whatever you explained yesterday is gone, so the model asks again. A Skill is how you stop repeating yourself: one text file, kept in a folder on your own machine, that the model can
September 12, 2026 by
A Skill is a written procedure, not an app you install
OdooBot
teach it once
Pi Agent Guide · Part 9

A Skill is a written procedure, not an app you install

Every new conversation starts blank. Whatever you explained yesterday is gone, so the model asks again. A Skill is how you stop repeating yourself: one text file, kept in a folder on your own machine, that the model can find and follow on its own. This article is about what that file is and how it gets in front of the model. Installing one and writing one come later.

1 file
A folder with one SKILL.md is enough for Pi Agent to find it
0 lines of code
It is Markdown. No Python, no API calls
200-500 lines
Recommended size for that main file
The repeating problem

Why you keep explaining the same thing

You have had a few conversations by now. One limitation shows up fast: every new Session starts with nothing. Two ordinary requests, and the questions that come back:

You say“Review this refrigerator photo and list the items that are close to expiring.”
Pi AgentHow is your refrigerator laid out? How do you categorize food? Where do you keep meat?
You say“Write an automation that turns off the living-room lights at night.”
Pi AgentWhat is the light's entity_id? Which Home Assistant version? Device trigger or entity trigger?
In plain terms

It is like having a capable stand-in who is on their first day, every single morning. They can do the work. They just have no idea how your house runs, so you brief them again.

Re-typing that background costs time and input tokens on every request. It also makes results wobble: the day you forget to mention that the top shelf is the freezer, you get a different answer.

What a Skill is

A procedure, written down once

A Skill stores that background in a file. At the start of a new Session, Pi Agent offers the model a short summary of each installed Skill; when a request matches one, the model reads the full procedure instead of asking you for it.

In plain terms

Think of the laminated card taped inside the cupboard door above the washing machine. Which cycle for whites, what never goes in the dryer, where the dark things get hung. You wrote it once. Anyone who follows it gets it right without asking you.

Four things make a Skill work like that card:

  • It sits in a known place. Under /data/pi-agent/skills/, which is where Pi Agent looks.
  • It has a name and a summary. The name and description fields at the top of SKILL.md.
  • The detail stays folded up. The model gets the summary first and reads the full instructions only when a request needs them.
  • You install it once. Every new Session gets it, without you doing anything.
When to reach for one: when you would otherwise repeat the same instructions, or when a task has to follow the same procedure every time. If you notice you have asked something in roughly the same words three times in a week, that task is your first Skill.
Not an app

Guidance, not a program that runs

A Skill looks like an app or a HACS integration because all three extend what a system can do. It works in a fundamentally different way, and that difference matters for security.

In plain terms

An app is a machine you install. A Skill is the note taped to the machine telling whoever walks up how to use it. The note cannot do anything by itself — but it can tell a very obliging person to do something you would not want done.

Mobile appHACS integrationPi Agent Skill
What it isStandalone executable softwareAn extension to Home Assistant, usually PythonPlain-text instructions for the model
How it runsDirectly on the deviceIn Home Assistant's Python environmentIt does not run. The model reads it and decides how to apply it
What starts itYou open itConfigured events or conditionsThe model picks it, based on what you asked
File typeAPK or IPA binaryPython files and a manifestMarkdown text in SKILL.md
Who checks itApp-store reviewCommunity scrutiny through HACSNobody. You read it yourself, before installing
Read every third-party Skill before you enable it. A SKILL.md file can contain instructions you did not expect — including an instruction to delete /config/. Tool permissions and approval prompts are a boundary, not a substitute for reading. Treat any instruction to make an external connection, delete files, or send data somewhere as a reason to stop.
Where they live

One folder each, one file that matters

Pi Agent keeps Skills in one fixed location: /data/pi-agent/skills/. Each Skill gets its own folder, and each folder must contain a SKILL.md. A folder without that file is skipped.

flowchart TD
  R["/data/pi-agent/skills/"] --> A["fridge-check/"]
  R --> B["ha-automation-templates/"]
  R --> C["video-pitch/"]
  A --> A1["SKILL.md - required"]
  A --> A2["examples/ - optional"]
  B --> B1["SKILL.md - required"]
  B --> B2["motion-light.yaml - optional"]
  C --> C1["SKILL.md - required"]
  C --> C2["scene-templates/ - optional"]
The layoutThe folder name is the Skill's local identity. Everything besides SKILL.md is optional material the main file can point the model at when needed.

Two notes about that path. Inside the container, the ~/.pi/agent/skills symbolic link points at the same place, so the command line and the interface work on the same files. And Home Assistant full backups include add-on /data/ by default, so your Skills come back with a restore. The 720MB video-tools cache is deliberately excluded and handled separately.

The files are local. Their contents are not. Pi Agent sends each available Skill's summary to your model provider in the system prompt, and sends the full instructions when a Skill is used. Never put a password or any other secret in a SKILL.md. Credentials belong in Home Assistant's secrets.yaml.

You would normally manage all this through the Skills tab in Settings rather than the directory. With nothing installed yet, it looks like this.

The Settings dialog in Pi Web with the Skills tab selected. Its left column reads No skills found, with a plus Add skill link at the foot of that column, and the wide right-hand pane reads Select a skill.
The Skills tab in SettingsNothing installed yet. Nothing is broken either — there is simply no procedure stored.
  • Skills is one of the five tabs across the top of the dialog, sitting between Models and Sub-agents. That is where this lives.
  • No skills found in the left column is the normal state until you install one. Pi Agent works perfectly well with none.
  • + Add skill sits at the foot of that same column. Part 10 covers what happens after you press it.
  • Select a skill is the placeholder in the right-hand pane. That pane is where a Skill's detail appears once the left column has something in it.
How the model finds them

The model never looks in your folders

This part explains nearly every “why is it ignoring my Skill” problem later. The model on the far end cannot see your disk. Pi Agent does the looking, then tells it what is there.

  1. Step 1

    Pi Agent scans the folder

    The pi-web backend reads every */SKILL.md under /data/pi-agent/skills/ and pulls the name and description out of the YAML frontmatter at the top. This usually happens when you select “New conversation”; some versions also refresh on “Reload Skills”.

  2. Step 2

    Those names and summaries go into the system prompt

    The list joins the instructions that start the Session. The wrapper varies by Pi Agent and pi-coding-agent version — <available_skills>, <skills>, or a Markdown section. The payload is the same either way: names and descriptions, nothing more.

  3. Step 3

    The model decides whether one applies

    Ask about a refrigerator photo and it can match that to fridge-check, then read the whole file and follow it. Ask about something unrelated and it ignores the list.

In plain terms

The model is handed the menu, not the recipes. One line per dish, just enough to know what is available. It goes and reads the full recipe only when you order that dish.

Here is roughly what the menu looks like:

<available_skills>
- fridge-check: Give photos of ingredients in the fridge to help users list items nearing expiration, suggestions for dinner dishes
- ha-automation-templates: Common HA automation templates (motion detection lights on, home air conditioning, etc.)
- video-pitch: Produce a 60-second subtitled product introduction video
</available_skills>

That block is the model's entire view of your Skills until it opens one. So the description does all the work of getting a Skill noticed.

Write the description as a trigger plus a task. “Handle food-related questions” is too vague to match anything. “When the user shares a refrigerator photo, list food that is close to expiring and suggest a dinner dish” says exactly when it applies. The convention comes from the mattpocock/skills project by Matt Pocock.

Seeing the list for yourself

You do not have to take this on trust. The System button in the top toolbar opens the System prompt panel, which shows the instructions the Session started with.

The Pi Agent System prompt panel, opened from the System button in the top toolbar. It shows the instruction text the agent is running under, beginning You are an expert coding assistant operating inside pi, then an Available tools list with one line each for read, bash, edit and write, and a Guidelines section below that.
The System prompt panelEverything the model was told before you typed anything.
  • “You are an expert coding assistant operating inside pi” opens the text. This is the real instruction the model received — if a Skill is not named in here, the model does not know it exists.
  • Available tools lists four, one line each: read, bash, edit and write. The line under the list adds that a project may give the model other custom tools on top of these.
  • Guidelines follows, with house rules such as using bash for file operations and read rather than cat to examine a file.
  • The text runs on below the visible edge. Scroll it for the rest of the Guidelines and, once you have Skills installed, the section that lists them.

It is also the fastest way to confirm a newly installed Skill reached this Session: open the panel, scroll down to the Skills section, and look for the name. That section's label and appearance vary by Pi Agent version, so go by the name and description rather than the heading. The panel above was taken on a machine with no Skills installed, which is why the visible text runs from the tools straight on to the guidelines with no Skills section in between.

No Skills section at all means either nothing is installed, so Pi Agent leaves it out, or your pi-web version is too old to show it separately and needs an upgrade.

What a small one looks like

One file, and no code inside it

In practice most Skills land in one of five areas: household routines such as waste sorting and refrigerator inventories; Home Assistant automation templates like motion lights and arrival climate control; video production with a fixed format; data processing over CSVs, logs and receipts; and external tools such as Notion, Google Calendar or a Telegram bot.

The file itself is smaller than people expect. A usable fridge-check Skill needs exactly one file, at /data/pi-agent/skills/fridge-check/SKILL.md. It begins like this:

---
name: fridge-check
description: Use when the user shares a refrigerator photo. List visible ingredients, flag items to inspect soon, and suggest a dinner idea from the remaining food.
---
# Fridge inventory skill
When the user shares a refrigerator photo:

The part between the three hyphens is the frontmatter — the only bit Pi Agent parses. Everything below is ordinary Markdown: the procedure, the limits, the output you want. No code anywhere, and none needed.

More Skills are not better. Every description takes up room in the system prompt, on every single turn. A handful is fine; hundreds eat a meaningful share of your context budget. Review them from time to time and remove or archive anything you have not used in 6 months.
When it does not work

Four things that actually go wrong

I installed a Skill and the model ignores it
Check three things, in order. One: start a new conversation — a Session created before the install never received the list. Two: open the System prompt panel and look for the name. If it is missing, Pi Agent failed to read the file: usually a missing frontmatter delimiter, wrong YAML indentation, or a missing name or description. Three: make the description specific. “When the user does X, do Y” is the pattern that works.
I edited SKILL.md and it is still following the old version
Pi Agent has no reliable real-time file monitoring. After editing a file on disk you generally need to start a new conversation, or select “Reload Skills”, before the change reaches the model. Refreshing the browser page is not enough. Start a new conversation, then check the System prompt panel for the updated description.
I cannot find the System prompt panel
Either your pi-web version predates it — check the Home Assistant Add-ons page for a Pi Agent update — or you are on a narrow screen, where the panel buttons move inside the menu. Open the menu and look for the System prompt option.
The model started behaving oddly after a third-party Skill
The SKILL.md probably contains instructions you did not read. Remove it with the Remove or Uninstall action in the Skills panel. From the command line you can also run podman exec -it pi-web pi uninstall <name>. As a last resort, connect over SSH and delete /data/pi-agent/skills/<that folder>.
Next

Where to go from here

keep going

You know what the file is. Part 10 puts one on your machine.

The next article covers installing a Skill — from a URL, from a repository, or by hand — and how to read one before you let the model act on it.

Open the full guide

Part 9 of the Pi Agent Onboarding Guide series, published by WoowTech.

Based on the Woow HA Pi Agent Onboarding Guide, produced by WoowTech and released under CC BY 4.0.

The Smart Space Solution · 智慧空間解決方案 · © 2026 WOOW Technology Co., Ltd.

Share this post