Install
openclaw skills install multi-topic-boardMulti-Topic Board: AI Agent active topic tracking and task closed-loop management. Tracks unresolved discussions, auto-updates aging days, sends timeout alerts after 3 days with no task, and generates execution tasks in tasks/. Triggered when: (1) user discusses a topic without conclusion; (2) user asks where things left off; (3) user wants to track pending decisions.
openclaw skills install multi-topic-boardNot a notepad — an execution accelerator.
Multi-Topic Board solves the "discussed then forgotten" problem. Discussions generate unresolved topics that never reach the execution layer. The board chains two Cron systems with tasks/ into a closed loop: track → remind → create task → complete.
🔥 Pending ──[3+ days, no task]──→ Cron notifies main
│ ↓
│ main decides: create task?
↓ ↓
🔄 Parked tasks/ file created
│ ↓
↓ ↓
✅ Done ←─────────────────────── task done, board updated
Two trigger Cron systems:
Each entry in the board:
- [ ] [Topic] Description | YYYY-MM-DD | source | X days | task: filename.md or none
| Field | Description | Who fills |
|---|---|---|
| YYYY-MM-DD | Discovery date, auto-recorded | Agent |
| days | Days since discovery, auto-updated | System (Cron) |
| task | File path when task exists | Manual |
| Status | Meaning | Trigger |
|---|---|---|
| 🔥 Pending | Topic open, no conclusion | User raises new topic |
| 🔄 Parked | Temporarily on hold | User says "暂缓" / "hold" |
| ✅ Done | Concluded or closed | Has conclusion + write result |
When this skill is first loaded, set up the closed-loop infrastructure:
mkdir -p tasks/
Tasks directory stores execution task files. When main decides to act on a pending topic, create a task file here and manually link it back to the board entry.
Check if HEARTBEAT.md exists in workspace:
HEARTBEAT.md as a new cron jobCreate Multi-Topic Board File (memory/multi-topic.md):
# Multi-Topic Board
> Track active topics and unresolved pending items.
> Both agent and user can update; Heartbeat syncs automatically.
**State Flow**:
🔥 Pending → 🔄 Parked → ✅ Done
**Closed-Loop Mechanism**:
- Heartbeat Cron syncs state changes
- System Maintenance Cron updates aging days
- 3+ days with no task → notifies main to create task in tasks/
- After task created → manually link file path to entry
**Usage**:
- User starts a topic → append to 🔥 Pending
- User says "hold" → move topic to 🔄 Parked
- Has conclusion → move to ✅ Done + write conclusion
- User asks "where did we leave off?" → read this file
**Format**:
- Aging days: updated daily by System Maintenance Cron
- Task link: fill in after creating task file
---
## 🔥 Pending
## 🔄 Parked
## ✅ Done
IF HEARTBEAT.md already exists:
Multi-Topic Board Sync
- Read
memory/multi-topic.md- Inject active topics into context
- Sync state changes
- Identify topics 3+ days with no task; report in main notification
IF HEARTBEAT.md does not exist, create a new cron job:
{
"schedule": { "kind": "every", "everyMs": 14400000 },
"payload": {
"kind": "agentTurn",
"message": "【Multi-Topic Board Sync】\n\nStep 1: Read sessions_list (filter noise sessions)\n\nStep 2: Read memory/multi-topic.md\n- Inject active topics into context\n- Sync state changes\n\nStep 3: Identify timed-out topics\n- Find topics 3+ days with task = none\n- IF > 0 → sessions_send to main: list timed-out topics, suggest creating tasks in tasks/\n"
},
"sessionTarget": "isolated",
"delivery": { "mode": "none" }
}
Every 4 hours (14400000ms).
{
"schedule": { "kind": "every", "everyMs": 86400000 },
"payload": {
"kind": "agentTurn",
"message": "【Daily Multi-Topic Board Maintenance】\n\nStep 1: Update aging days\n- Read memory/multi-topic.md\n- For each 🔥 Pending entry: today - discovered_at = days\n- IF no days field → append to entry\n- IF days changed → update in place\n- Write back to multi-topic.md (only touch the days field)\n\nStep 2: Timeout stats and alert\n- Count entries: days >= 3 AND task = none\n- IF > 0 → sessions_send to main: N topics 3+ days with no task: [topic names]\n- IF = 0 → silent end\n"
},
"sessionTarget": "isolated",
"delivery": { "mode": "none" }
}
Daily.
After creating any task file, update the corresponding board entry in memory/multi-topic.md:
task: none to task: tasks/your-task-file.md| File | Purpose |
|---|---|
memory/multi-topic.md | Multi-Topic Board main file |
HEARTBEAT.md | Heartbeat cron payload (if skill creates it) |
tasks/*.md | Execution task files |
User discussion produces unresolved topic → Agent appends to 🔥 Pending
days >= 3 AND task = none → Cron notifies main → Suggest creating task in tasks/
tasks/ file completed → Agent manually links path to board → Moves to ✅ Done
User asks "where did we leave off?" → Read board to user
Suitable for:
Not suitable for:
Multi-Topic Board v1.0 — Every unresolved topic gets a landing place