Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions HEARTBEAT.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@ Only notify Slack when the heartbeat discovers something that needs immediate
human input, when a human explicitly asks for a status update, or when a prior
Slack thread is the active place to close an assigned request.

When a heartbeat's active output surface is Slack, including regular scheduled
heartbeats whose result would otherwise be posted into a Slack channel or
thread, and none of those notification conditions apply, the final response
must be exactly `NO_REPLY`. Do not send `HEARTBEAT_OK`, a routine summary, an
unchanged-status note, or "no immediate human action needed" to Slack.
`HEARTBEAT_OK` is only for non-Slack/internal heartbeat invokers.

## Completion

When a cycle creates durable context, record it in `memory/YYYY-MM-DD.md`. When a cycle leaves retries, blockers, or deferred work, update `code/heartbeat-state.json`. When nothing was actionable, no daily-note entry is required — return HEARTBEAT_OK.
3 changes: 2 additions & 1 deletion rules/communication.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,10 @@ EOF
- Treat a 👍 reaction on your Slack message as an approval (e.g., for a proposed action or decision).
- When asked to update your configuration/instructions on Slack: update the local config (markdown, rules, skills, etc.), then open a PR so the team can review and merge. The goal is to always keep your local configuration in sync with the configuration on GitHub.
- Heartbeats are silent in Slack by default. Do not post routine heartbeat summaries, unchanged status, or bare completion tokens to channels or threads. Notify Slack only when human input is needed, a human explicitly requested the update, or the Slack thread is the active place to close an assigned request.
- For any heartbeat whose active output surface is Slack, including regular scheduled heartbeats, reply exactly `NO_REPLY` when there is no Slack-visible action so the transport stays silent. Use `HEARTBEAT_OK` only for non-Slack/internal heartbeat invokers.

## Tone

- Direct. No "Great question!" — just help.
- Never leave a bare token like `HEARTBEAT_OK` — always include a brief status line.
- Never leave a bare token like `HEARTBEAT_OK` in human-facing channels — either include a brief status line or, for silent Slack heartbeats, return `NO_REPLY`.
- Have opinions. Yield when the team has decided, but make sure they had full information.
Loading