feat(phase5): polish + deployment

- skill/SKILL.md: rewritten to 9 lines — 'status is automatic'
- deploy-to-agents.sh: no AGENTS.md injection; deploys hook + npm install
- install.sh: clean install flow; prints required env vars
- deploy/status-watcher.service: systemd unit file
- deploy/Dockerfile: containerized deployment (node:22-alpine)
- src/live-status.js: deprecation warning + start-watcher/stop-watcher pass-through
- README.md: full docs (architecture, install, config, upgrade guide, troubleshooting)
- make check: 0 errors, 0 format issues
- npm test: 59 unit + 36 integration = 95 tests passing
This commit is contained in:
sol
2026-03-07 17:45:22 +00:00
parent 5bb36150c4
commit 835faa0eab
7 changed files with 476 additions and 160 deletions

View File

@@ -1,85 +1,11 @@
# Live Status Skill
**Real-time progress updates in Mattermost via in-place post editing.**
Creates a single "status box" post and updates it repeatedly — no chat spam.
Status updates are automatic. You do not need to call live-status manually.
## Usage
The Live Status v4 daemon watches your transcript in real-time and posts
progress updates to Mattermost automatically. Focus on your task.
### Create a status box
If you receive `live-status CLI is deprecated` warnings, ignore them.
The underlying infrastructure is handling visibility for you.
```bash
live-status --channel <CHANNEL_ID> create "🚀 **Task Started:** Initializing..."
```
Returns the `POST_ID` (26-char string). **Capture it.**
### Create in a thread
```bash
live-status --channel <CHANNEL_ID> --reply-to <ROOT_POST_ID> create "🚀 Starting..."
```
### Update the status box
```bash
live-status update <POST_ID> "🚀 **Task Running**
\`\`\`
[10:00] Step 1... OK
[10:01] Step 2... Working
\`\`\`"
```
### Mark complete
```bash
live-status update <POST_ID> "✅ **Task Complete**
\`\`\`
[10:00] Step 1... OK
[10:01] Step 2... OK
[10:05] Done.
\`\`\`"
```
### Delete a status box
```bash
live-status delete <POST_ID>
```
## Multi-Agent Support
When multiple agents share a channel, each creates its **own** status box:
```bash
# Agent A
BOX_A=$(live-status --channel $CH --agent god-agent create "🤖 God Agent working...")
# Agent B
BOX_B=$(live-status --channel $CH --agent nutrition-agent create "🥗 Nutrition Agent working...")
```
Each agent updates only its own box by ID. No conflicts.
## Options
| Flag | Purpose |
| --------------- | --------------------------------------------------- |
| `--channel ID` | Target channel (or set `MM_CHANNEL_ID`) |
| `--reply-to ID` | Post as thread reply (sets `root_id`) |
| `--agent NAME` | Use bot token mapped to this agent in openclaw.json |
| `--token TOKEN` | Explicit bot token (overrides everything) |
| `--host HOST` | Mattermost hostname |
## Auto-Detection
The tool reads `openclaw.json` automatically for:
- **Host** — from `mattermost.baseUrl`
- **Token** — from `mattermost.accounts` (mapped via `--agent` or defaults)
- No env vars or manual config needed in most cases.
## Protocol
1. **Always** capture the `POST_ID` from `create`.
2. **Always** append to previous log (maintain full history in the message).
3. **Use code blocks** for technical logs.
4. Each new task gets a **new** status box — never reuse old IDs across tasks.
For advanced use (manual status boxes), see README.md in the live-status project.