Skills and memory

Two ways to give Tacet something to work from: a skill that fires on a phrase, and a note that persists across sessions.

A skill is a Markdown file

Trigger phrases in the frontmatter, guidance in the body. Drop it in the skills directory inside your config directory, which is ~/.tacet/skills/ on a default Unix install.

---
name: calc
triggers: [how much, how many, times, percent]
---
Do arithmetic with the `calculate` tool. Never compute it yourself.

One skill, one turn

When a message matches, exactly one skill is fenced into that single turn's prompt and never into the system instruction. That distinction was measured rather than guessed: embedding the same guidance in the system instruction pushed a small model toward explaining the task instead of calling the tool.

Where this went wrong once

The guidance block was written only into the question turn, and from the second turn of the tool loop onward the question is deliberately empty. So the skill vanished at exactly the turn where the model was recovering from a tool result. Worse, the eval suite runs on the mock engine, whose template kept the block, so the one template no real model ever saw was the one the measurement covered.

Memory is a file you can open

The remember tool writes notes to disk and they are injected into a later turn only when they are relevant to it. Nothing is learned silently: /memory inside the shell shows what is stored and what would be injected. Conversations are kept separately, which is what makes tacet --continue and tacet sessions work.

What the model is actually shown

If you want to see the whole assembled prompt rather than reason about it, /preview in the shell prints it before it is sent, and tacet chat --show-prompt does the same from outside. tacet tools --schema prints the tool schema exactly as the model receives it.