Teaching her
The difference between an assistant you enjoy and one you tolerate is mostly whether you have to explain yourself every time. This is the page about not having to.
Three kinds of memory
Section titled “Three kinds of memory”They sound alike. They behave completely differently, and knowing which is which saves a lot of confusion.
The conversation. Everything said in the current session. She has it all while you are talking, and it is searchable afterwards. Nothing to manage.
The working set. Goals and constraints for the task in front of you — “we’re targeting Postgres 16”, “don’t touch the vendor directory”. She holds these deliberately during a session. They are not permanent; they vanish when the session ends. That is the point: a constraint for today’s task should not silently govern next month’s.
Inspect or correct it any time:
/workset list/workset replace <id> <corrected text>/workset drop <id>/workset clearDurable notes. The things worth keeping — how your projects are laid out, your preferences, decisions and why. These survive everything and are what she carries into a brand-new conversation.
Keeping durable memory honest
Section titled “Keeping durable memory honest”Durable memory is the part that can go wrong quietly, so there is a gate on it. A setting decides what happens when she wants to write a permanent note:
- auto — she writes it.
- notify — she writes it and tells you.
- review — it waits in a queue until you approve it.
On review, you drain the queue yourself:
waffle candidates list # what is pendingwaffle candidates show <id> # full text and where it came fromwaffle candidates approve <id>waffle candidates deny <id> --reason "duplicate"Regardless of that setting, anything derived from untrusted content is always queued — if she read a web page and wants to remember something from it, you approve it. That is not configurable, and it is the single most useful default in the memory system.
Deleting things
Section titled “Deleting things”waffle forget <query>Previews what matches, and removes only what you confirm. Honest about its limits: it cannot reach into your provider’s logs, messages already delivered to you, or backups you already took.
Skills
Section titled “Skills”A skill is a written instruction she can reuse — a way of doing something you
would otherwise re-explain. It is a folder with a SKILL.md file in it: a name,
a description, and the instructions.
---name: standupdescription: Summarize yesterday's commits and open PRs into a standup update.---
Pull the last 24h of commits and open PRs. Group into Yesterday / Today /Blockers. Keep it to five lines.Use one on purpose with /skill standup, or let her reach for it herself —
every skill’s description is visible to her, so a matching task can pull it in
without you asking.
waffle skills ls # what exists, and which are activeSkills you write by hand are active immediately.
Learning from her own mistakes
Section titled “Learning from her own mistakes”There is a loop that reviews her recent history for things that keep going wrong, and proposes skills to fix them:
waffle learnIt mines, it proposes, it shows you which conversations triggered each proposal. What it writes is inactive — a suggestion, not a change. Nothing becomes live until you say so:
waffle skills activate <name>Worth running on a schedule, weekly rather than hourly:
waffle cron add learn-weekly 0 3 * * 0 /learnNerd corner: How it fits together — the three memory layers, the write gate, and how the learning loop is bounded.