Contextual todo triggers
Skill jpoindexter/awwwards-todo-skills/skills/contextual-todo-triggers
Use when deciding whether and how to auto-surface a todo/checklist during a conversation — defines the trigger conditions (user request, message interval, completion, progress, topic shift) and maps each context to a display style and status message, so todos appear at the right moment without spamming.From its SKILL.md
npx -y skills add jpoindexter/awwwards-todo-skills --skill contextual-todo-triggersAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 29 days oldThe repository was created 29 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.9 KB, 642 tokens by cl100k_base, as published. Nobody here has run it
Contextual Todo Triggers
Decide when to show todos and which style to show them in. The goal: surface progress at meaningful moments, stay silent otherwise. This is the timing/decision concern only — render with swiss-grid-todo-display, persist with cross-chat-todo-persistence.
When to use
- An agent maintains a live todo list during a long conversation and must choose when to reprint it.
- You want celebration/progress feedback without reprinting the list every turn.
Trigger conditions (show if ANY are true)
| Trigger | Fires when |
|---|---|
userRequested | User explicitly asks ("show todos", "status") |
messageInterval | Every 10 messages (counter % 10 === 0) |
itemCompleted | A task just moved to completed |
significantProgress | Meaningful forward movement |
partialCompleted | Part of a task finished |
topicShift | Conversation topic changed |
Maintain a running message counter; the interval trigger is the only stateful one.
Context → style (from swiss-grid-todo-display)
| Context | Style | Why |
|---|---|---|
itemCompleted | brutalist | bold celebration |
significantProgress | terminal | energy / momentum |
topicShift | modern | fresh context |
| default / interval / request | minimalist | calm daily view |
Context → status message
| Context | Message |
|---|---|
itemCompleted | 🎉 TASK COMPLETED! Updated progress: |
significantProgress | ⚡ SIGNIFICANT PROGRESS! Current status: |
partialCompleted | ✨ PARTIAL COMPLETION! Status update: |
topicShift | 🔄 TOPIC SHIFT DETECTED! Current todos: |
userRequested | 📋 TODO STATUS REQUESTED: |
| interval (default) | 📊 PERIODIC UPDATE (10 messages): |
Trigger-reason labels (for logging)
user_request, completion, progress, partial, topic_shift, message_interval — resolve in that priority order.
Decision flow
- Increment message counter.
- Evaluate all triggers. If none fire → do not display.
- If any fire → pick style + message from the tables above (highest-priority context wins), render, and emit the trigger reason.
Reference implementation
reference/triggers.mjs — self-contained ES module. Exports shouldDisplay(context, counter), styleForContext(context), messageForContext(context), triggerReason(context). Run node reference/triggers.mjs for a demo.
Agent-runtime notes
Runtime-agnostic — pure decision logic over a context object and an integer counter. No host APIs. The message counter is the only state you must carry across turns.
What ships with it: 1 file
2.8 KB alongside SKILL.md, 1 of them executable
reference/
- triggers.mjsruns2.8 KB