Check In
A check-in is worth having only if it remembers the last one. This is the smallest skill in the pack that demonstrates the whole memory loop: recall commitments, ask about them, write back what you learn.
Procedure
- Recall open commitments.
recall(category="reminder", limit=20)— the things the user said they would do and has not closed out.reminderis the category for todos; there is notaskcategory, and passing one silently matches nothing. - Recall recent context.
search_past_conversations(days=7, limit=10)for what has actually been going on. Use it to make the greeting specific. - Open with one concrete follow-up, not a generic greeting:
Yesterday you said you'd finish the pricing deck. How did that go? If memory is empty, say so plainly and ask what they are working on — a fabricated callback is far worse than admitting a blank slate.
- Ask at most three questions. A check-in that turns into an interrogation stops getting answered.
- Write back what changed.
- Done →
update_memory(knowledge_id=..., content="... — completed <date>") - Still open → leave it, but note the new expected date
- New →
remember(fact="<commitment> by <date>", category="reminder", due_at="<ISO date>")
- Done →
- Close with one line on what you will ask about next time.
Tone
Brief, specific, unsentimental. No performance of enthusiasm, no "you've got this". Track the work, not the mood — unless the user brings up the mood, in which case listen rather than advise.
Honest limits
- The user starts this, not GAIA. A truly proactive daily check-in needs the
scheduler to run skills on a cron, which is not wired yet (
--skillis rejected when adding a schedule). Today this runs when invoked. - Everything here depends on memory being enabled. With memory off there is no check-in to speak of — say so instead of running an empty version.
- Do not record anything the user marks private. If in doubt, ask before storing.
Fork this
Point it at a team instead of a person: recall commitments per owner in step 1 and produce a standup digest in step 6.


