name: agenter-message description: Read, query, send, edit, and recall durable room messages. Use this when room context, room history, or room-visible coordination may affect the next step.
agenter-message
Use this skill when you need to read or query room history, send, edit, or recall a durable room message, or decide whether room-visible coordination is part of the next step.
Quick start:
- If the latest room message already contains the full task and no other room is involved yet, do not reread the room first.
- If the task already shows the exact room
chatId, use that literalchatIddirectly formessage send,message edit,message recall, ormessage read. - Run
message listonce only when you truly need achatIdor need to discover another visible room. - Run
message readwith JSONstdinonly when room history may actually change the decision. - Run
message querywhen you need cross-message lookup, fielded search, or guarded SQL over the rooms you already hold. - For temporary cross-room search, prefer
chatId:"*"so the runtime resolves only the rooms you already have grants for. - Decide whether a durable room message is useful now, and if so whether it should be an acknowledgement, a narrow follow-up question, a correction, or a final reply.
- Send one durable message with the correct room scope and protocol. If you are replying to a specific earlier room message, include
ref. If this acknowledgement or follow-up question may need a later silence check, you may add one-shotfollowUpAfterMs. Throughroot_bash, prefercommand=message sendplus JSONstdin; only use argv JSON for trivial single-line payloads. Ifmessage send --helpmarks compact asSuggestedorAvailable,message send --compactis also available for positional payloads. message sendreturnsrecentMessages. Inspect them immediately as a lightweight post-send sanity check.- If two of your recent messages look similar, run
message readbefore changing history so you can also seereferencedItemsand the nearby reply context. - Similar wording alone is not enough to justify recall. Judge the room's actual conversation context first.
- If the repetition was intentional in the room's protocol or request, keep both messages.
- If your prior room message is invalid or stale and you already know its
messageId, prefermessage editto correct that durable reply in place. - If the earlier durable reply should disappear rather than remain visible with corrected wording, use
message recallon thatmessageIdbefore sending a replacement. - If you cannot safely edit or recall the earlier durable reply, send a corrected replacement.
- If that reply also resolves the related attention work, you can switch to
attentionand settle the same context.
Key laws:
- The origin room owns the user-visible conversation.
- For
message read,message query,message send,message edit, andmessage recallthroughroot_bash, default to JSONstdin; only use argv JSON when the payload is trivially small. - If
message read --help,message query --help,message send --help,message edit --help, ormessage recall --helpmarks compact asSuggestedorAvailable,--compactis an optional positional mode. If the positional array becomes unclear, switch back to standard object JSON immediately. - Use
refwhen the new room message is replying to a specific earlier durable message. followUpAfterMsis an optional one-shot reminder for yourself, not shared room truth. Use it when you want the runtime to create later attention if this message is still the latest visible room fact after a delay.followUpAfterMsnever auto-sends another room reply. It only asks you to re-decide later whether another visible room message is needed.message sendreturnsrecentMessages; treat them as a quick self-check, not a replacement for a full room read.message readreturns the visibleitemsplus one-hopreferencedItems, so you can inspect nearby reply context before deciding whether to revise room history.- If the task already gives the exact room
chatId, that literal room id is enough to send the room-visible update; do not rediscover the same room throughmessage list. message queryis message-history lookup, not a generic workspace search tool.message queryonly sees the room scope you already hold.chatId:"*"means "all rooms currently granted to me", not "all rooms in the system".- Use
mode:"match"for literal text lookup,mode:"query"for structured message filters, andmode:"sql"only when the analysis genuinely needs aggregation or projection. mode:"sql"is read-only and runs on a pre-authorized temporary projection. If the runtime rejects your SQL, tighten the query instead of trying to mutate the dataset.- If you already have the prior durable reply's
messageId,message editis the cleanest correction path for your own earlier message. - If the earlier message should no longer remain visible in the room,
message recallis the cleanest withdrawal path for your own earlier message. - If you do not have the
messageId, or the earlier message belongs to someone else, send a corrected follow-up message instead of guessing. - Prefer
message editwhen the same room fact should stay visible with corrected content; prefermessage recallwhen the prior room fact should be withdrawn before you post a replacement. - Similar wording alone is not enough to justify recall; decide from the actual room context and whether the repetition was intentional in the room's protocol or request.
- If the current room message already fixes the task, URL, or reply token, you can usually move on to the next tool or room action instead of rereading the room.
- If the room context already exposes
visibleRooms, those rooms are real durable channels you can use now; a participant missing from the origin room is not automatically unavailable. - If the user asks you to ask or relay to another participant and a matching visible room already exists, relay there instead of telling the user that the participant is not here.
- In relay flows, "I'm asking them now" is progress, not the delivered answer.
- Room messages are durable shared truth.
- Tool success alone does not change room-visible truth. If the room still needs a durable message, send that message explicitly.
- If the room will wait through multi-step work, it often helps to send one short acknowledgement before the deeper tool work starts.
- A good acknowledgement is brief: usually one or two short sentences, not a full requirement recap or numbered execution plan.
- Keep room-visible updates concise and timely without narrating every internal step.
- If another participant or room still owes the missing fact, keep the related attention context open; do not close it with
attention commit ... done=trueyet. - After a relay target replies, a common next step is to deliver that answer back into the origin room before settling the attention.
- If the latest room-visible fact is only teammate progress and you do not yet have a new fact to deliver, keep doing the remaining private work instead of mirroring that progress back into the room.
- Private reminders do not replace a durable room message; they usually mean there is still unresolved shared-room work.
- Follow the room's requested protocol exactly.
- If the room already fixed a URL, path, or other reply token, preserve that fact exactly instead of silently normalizing it.
- Terminal success alone is not the room-visible result. Once the exact promised URL or path has been freshly verified, send the room message before you treat the chat work as done.
- After the room-visible result is in place, a common cleanup step is
attention listfollowed byattention commit ... done=truefor the same context. - Later feedback can reopen the same context; keep it open until the updated room-visible result has actually been sent.
References:
references/room-protocols.md: room ownership, protocol prefixes, and correction behaviorreferences/chat-attention-items.md: acknowledgement timing, chat etiquette, and settling chat-related attention items