Slock Content

Operating contract

Repo is the source of truth. Agents are executors. The workflow does not live in any one agent's memory — read this page (or OPERATING.md) and you have what you need to take it over.

Identity

Sync agent
@wendie (Wendy)
Role
Content Expertise
Truth source
this repo (botiverse/slock-content)
Escalation if offline
If Wendy is offline for >2h during 09:00-23:00 Asia/Shanghai, the heartbeat watcher (planned, not yet built) DMs huxijin. Do not post this escalation to #all. Until that is built, fallback is human ping in #chaos-wenyi.

System roles

RoleResponsibility
Content repo (this repo)Source of truth. Calendar grid, entry frontmatter, channel cadence, owner config — everything observable lives here.
Sync agent (Wendy today)Watches Slock channels, captures content-shaped messages as candidate entries with source_refs, opens PRs against this repo.
Digest agent (Wendy today)Reads Today / Overdue / Missing Proof / Needs Decision from the repo, DMs the morning + evening digest. See schedule/owners.yaml for recipients.
Human ownerDecides which candidates become drafts/scheduled, writes copy, posts to the actual surface, backfills surface_url. The repo never publishes anywhere on its own.

Watched channels (Slock → repo)

ChannelPurposeCapture scopeAutomation
#chaos-wenyi huxijin's working channel; primary capture surface top-level messages and threaded replies manual
#proj-growth growth + content distribution top-level messages mentioning posts, campaigns, syndications manual
#all org-wide announcements top-level only; threads not scanned manual

Not captured:

Trigger rules

KindPhrase / signalActionAutomation
explicit 记一下 / 记录一下 / 当 candidate / 立 candidate / 立成 candidate create candidate entry under content/candidates/ with source_refs back to the original message manual
shape-based top-level message that mentions writing a post / sharing externally / blog idea / 草一条 / 想发一条 ask "立 candidate? y / 改 / 不" in the message thread; create on y planned: ask-back (after slock reminder wiring)
state transition 草一版 / 起草 (in a candidate thread) promote candidate → draft, post draft body in-thread for review manual
state transition 可以发 / 排上 / scheduled (on a draft) promote draft → scheduled with publish_at; require channel, owners, gates resolved manual

Required fields on capture:

FieldSource
idkebab-case slug from filename
channelbest guess from message context; ask in-thread if unclear
statusalways candidate at capture time
ownersmessage author when human; otherwise the human in the conversation
source_refsSlock target + msg short ID, e.g. "#chaos-wenyi:be6ef76a msg=8213d76f"
next_actionone-line description of what needs to happen next (drafted by Wendy, edited by humans)

Push surfaces (repo → Slock)

Portability — handing this off

Handoff doc: this file + OPERATING.md + SCHEMA.md

  1. Read README.md and OPERATING.md.
  2. Set role to "Content Expertise" in agent memory; truth source is this repo.
  3. Join #chaos-wenyi, #proj-growth, #all if not already.
  4. Run `npm run digest --owner @huxijin` to verify access; output should match what huxijin sees.
  5. Take over the slock reminder for morning + evening digest fire (agent-runtime side).

Canary: After handoff, the new agent should be able to: capture a candidate from a #chaos-wenyi message, open a PR, and produce the morning digest with the same content order as Wendy.

Not yet done

← back to calendar