Install
openclaw skills install bear-share-syncDetect new Bear notes tagged
openclaw skills install bear-share-syncThree-step pipeline: Bear #share → Canvas node → iMessage preview.
grizzly CLI installed and token configured (~/.config/grizzly/token)channels.bluebubbles)canvases/agent_capabilities.canvas (created on first run if missing)Set environment variables (or defaults apply):
| Variable | Default | Purpose |
|---|---|---|
BEAR_SHARE_TAG | share | Bear tag to watch |
BEAR_SHARE_CANVAS | canvases/agent_capabilities.canvas | Path to canvas file |
BEAR_SHARE_TARGET | (required) | iMessage target: E.164 phone, email, or chat_guid:... |
BEAR_SHARE_STATE | ~/.bear-share-sync/state.json | Tracks processed note IDs |
bash scripts/poll-share-notes.sh
Outputs JSON array of unprocessed notes (id, title, content, tags). Updates state file to mark notes as seen.
For each new note, append a knowledge node to the canvas. Run:
python3 scripts/update-canvas.py --canvas "$BEAR_SHARE_CANVAS" --notes /dev/stdin
Node layout: new nodes placed at Y = max(existing Y) + 200, X = 0. Node color = "4" (green). Edge from a central "Shared Notes" group node if present.
See references/canvas-schema.md for the JSON Canvas structure.
bash scripts/send-preview.sh "<target>" "<title>" "<summary>"
Uses the message tool with channel: "bluebubbles". Sends a compact preview:
📝 New shared note: <title>
<first 280 chars of content>…
🔗 See canvas for full node.
NOTES=$(bash scripts/poll-share-notes.sh)
if [ "$NOTES" != "[]" ]; then
echo "$NOTES" | python3 scripts/update-canvas.py --canvas "$BEAR_SHARE_CANVAS" --notes /dev/stdin
echo "$NOTES" | python3 -c "
import json, sys, subprocess
for n in json.load(sys.stdin):
subprocess.run(['bash','scripts/send-preview.sh',
'$BEAR_SHARE_TARGET', n['title'], n['content'][:280]])
"
fi
Set up a cron job to poll every 15 minutes:
*/15 * * * * cd /path/to/skill && ./scripts/poll-share-notes.sh | ...
Or use OpenClaw cron with payload.kind = "agentTurn" and the pipeline command.