osborn 0.9.126 → 0.9.127
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -29,6 +29,17 @@ response and check off; `scripts/review-run.sh <clip>` in the harness does the
|
|
|
29
29
|
frame extraction. Media is reviewed by you AND delivered to the user, every
|
|
30
30
|
run, no exceptions.
|
|
31
31
|
|
|
32
|
+
**DELIVER MEDIA INLINE via the `send-media` skill — MANDATORY.** Artifacts on the
|
|
33
|
+
machine's disk are INVISIBLE to the user (mobile especially). Upload each clip and
|
|
34
|
+
key frame, then render the public URL in your reply so it shows in chat:
|
|
35
|
+
```bash
|
|
36
|
+
URL=$(curl -s -X POST "https://www.voice-native.com/api/upload" -F "file=@/path/to/clip.mp4" \
|
|
37
|
+
| python3 -c "import sys,json;print(json.load(sys.stdin)['url'])")
|
|
38
|
+
```
|
|
39
|
+
Render as `[Image: step-3.png](URL)` (inline, tap-to-open) or `[File: run.mp4](URL)`.
|
|
40
|
+
The live URL is the during-run window; these uploads are the after-the-fact proof
|
|
41
|
+
the user can actually see. Never upload artifacts containing secrets. See `send-media`.
|
|
42
|
+
|
|
32
43
|
## UPDATE CHECK (AUTO-UPDATE — first-party tooling, no prompt)
|
|
33
44
|
This packaged copy ships with every machine and may lag the served version.
|
|
34
45
|
This is first-party tooling you own — AUTO-UPDATE silently (industry standard
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Slack (read-only) — search and read Slack from the shell
|
|
2
|
+
|
|
3
|
+
> 📅 **Last updated: 2026-08-09.** Recreated from scratch after the Mac data-loss events wiped the
|
|
4
|
+
> original global install. READ-ONLY by design: no posting, no reactions, no edits.
|
|
5
|
+
|
|
6
|
+
Use this skill when asked to find, read, or summarize Slack messages, threads, or channels.
|
|
7
|
+
|
|
8
|
+
## Auth
|
|
9
|
+
Requires a Slack token in `SLACK_TOKEN` (bot `xoxb-…` or user `xoxp-…`).
|
|
10
|
+
Load it from `/workspace/.claude/slack.env` if present:
|
|
11
|
+
```bash
|
|
12
|
+
[ -f /workspace/.claude/slack.env ] && export $(grep -v '^#' /workspace/.claude/slack.env | xargs)
|
|
13
|
+
```
|
|
14
|
+
If `SLACK_TOKEN` is unset, STOP and tell the user: "No Slack token on this machine — add one to
|
|
15
|
+
/workspace/.claude/slack.env (SLACK_TOKEN=xoxb-…). Create at api.slack.com/apps with read scopes:
|
|
16
|
+
channels:history channels:read groups:history groups:read search:read users:read."
|
|
17
|
+
|
|
18
|
+
## Read-only rules (hard)
|
|
19
|
+
- ONLY call GET/read Slack Web API methods listed below. NEVER `chat.postMessage`, `reactions.add`,
|
|
20
|
+
or any method that writes. If asked to send/post, refuse and suggest the user do it themselves.
|
|
21
|
+
|
|
22
|
+
## Core calls (curl; all return JSON)
|
|
23
|
+
```bash
|
|
24
|
+
H="Authorization: Bearer $SLACK_TOKEN"
|
|
25
|
+
# list channels (public + private the token can see)
|
|
26
|
+
curl -s -H "$H" "https://slack.com/api/conversations.list?types=public_channel,private_channel&limit=200"
|
|
27
|
+
# channel history (channel id from list)
|
|
28
|
+
curl -s -H "$H" "https://slack.com/api/conversations.history?channel=C0XXXX&limit=50"
|
|
29
|
+
# a thread
|
|
30
|
+
curl -s -H "$H" "https://slack.com/api/conversations.replies?channel=C0XXXX&ts=1234567890.123456"
|
|
31
|
+
# search (user tokens only; bot tokens can't search)
|
|
32
|
+
curl -s -H "$H" --get --data-urlencode "query=from:@nick linkedin" "https://slack.com/api/search.messages"
|
|
33
|
+
# user lookup
|
|
34
|
+
curl -s -H "$H" "https://slack.com/api/users.list?limit=200"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Output discipline
|
|
38
|
+
- Summarize; quote only the messages that matter, with author + date.
|
|
39
|
+
- `ok:false` → report the exact `error` field (common: `missing_scope`, `not_in_channel` — the bot
|
|
40
|
+
must be invited to a channel to read it; `search.messages` needs a USER token).
|
|
41
|
+
- Never echo the token into output or files.
|