agent-slack 0.2.13 → 0.3.0

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.
package/README.md CHANGED
@@ -7,17 +7,9 @@ Guiding principle:
7
7
  - **token-efficient output by default** (compact JSON, minimal duplication, and empty/null fields pruned) so LLMs can consume results cheaply.
8
8
  - **zero-config auth** -- Auth just works if you have Slack Desktop (with fallbacks available). No Python dependency.
9
9
 
10
- ## At a glance
11
-
12
- - **Read**: fetch a message, detect threads, list full threads
13
- - **Search**: messages + files (with filters)
14
- - **Artifacts**: auto-download snippets/images/files to local paths for agents
15
- - **Write**: reply in thread, add reactions
16
- - **Canvas**: fetch Slack canvases as Markdown
17
-
18
- ## Installation
10
+ ## Getting started
19
11
 
20
- Recommended (Bun install script):
12
+ Install via Bun (recommended):
21
13
 
22
14
  ```bash
23
15
  curl -fsSL https://raw.githubusercontent.com/stablyai/agent-slack/master/install.sh | sh
@@ -29,6 +21,14 @@ OR npm global install (requires Node >= 22.5):
29
21
  npm i -g agent-slack
30
22
  ```
31
23
 
24
+ ## At a glance
25
+
26
+ - **Read**: fetch a message, browse channel history, list full threads
27
+ - **Search**: messages + files (with filters)
28
+ - **Artifacts**: auto-download snippets/images/files to local paths for agents
29
+ - **Write**: reply, edit/delete messages, add reactions
30
+ - **Canvas**: fetch Slack canvases as Markdown
31
+
32
32
  ## Agent skill
33
33
 
34
34
  This repo ships an agent skill at `skills/agent-slack/` compatible with Claude Code, Codex, Cursor, etc
@@ -58,8 +58,10 @@ agent-slack
58
58
  │ └── parse-curl
59
59
  ├── message
60
60
  │ ├── get <target> # fetch 1 message (+ thread meta )
61
- │ ├── list <target> # fetch full thread
61
+ │ ├── list <target> # fetch thread or recent channel messages
62
62
  │ ├── send <target> <text> # send / reply (does the right thing)
63
+ │ ├── edit <target> <text> # edit a message
64
+ │ ├── delete <target> # delete a message
63
65
  │ └── react
64
66
  │ ├── add <target> <emoji>
65
67
  │ └── remove <target> <emoji>
@@ -127,10 +129,12 @@ agent-slack message get "#general" --ts "1770165109.628379"
127
129
  agent-slack message list "#general" --thread-ts "1770165109.000001"
128
130
  ```
129
131
 
130
- If you have multiple workspaces configured and you use a channel **name** (`#channel` / `channel`), you must pass `--workspace` (or set `SLACK_WORKSPACE_URL`):
132
+ If you have multiple workspaces configured and you use a channel **name** (`#channel` / `channel`), you must pass `--workspace` (or set `SLACK_WORKSPACE_URL`).
133
+ `--workspace` accepts a full URL or a unique substring selector:
131
134
 
132
135
  ```bash
133
136
  agent-slack message get "#general" --workspace "https://stablygroup.slack.com" --ts "1770165109.628379"
137
+ agent-slack message get "#general" --workspace "stablygroup" --ts "1770165109.628379"
134
138
  ```
135
139
 
136
140
  ## Examples
@@ -146,6 +150,15 @@ agent-slack message get "https://workspace.slack.com/archives/C123/p170000000000
146
150
 
147
151
  # Full thread for a message
148
152
  agent-slack message list "https://workspace.slack.com/archives/C123/p1700000000000000"
153
+
154
+ # Recent channel messages (browse channel history)
155
+ agent-slack message list "#general" --limit 20
156
+
157
+ # Recent channel messages that are marked with :eyes:
158
+ agent-slack message list "#general" --with-reaction eyes --oldest "1770165109.000000" --limit 20
159
+
160
+ # Recent channel messages that do not have :dart:
161
+ agent-slack message list "#general" --without-reaction dart --oldest "1770165109.000000" --limit 20
149
162
  ```
150
163
 
151
164
  Optional:
@@ -155,6 +168,23 @@ Optional:
155
168
  agent-slack message get "https://workspace.slack.com/archives/C123/p1700000000000000" --include-reactions
156
169
  ```
157
170
 
171
+ ### Reply, edit, delete, and react
172
+
173
+ ```bash
174
+ agent-slack message send "https://workspace.slack.com/archives/C123/p1700000000000000" "I can take this."
175
+ agent-slack message edit "https://workspace.slack.com/archives/C123/p1700000000000000" "I can take this today."
176
+ agent-slack message delete "https://workspace.slack.com/archives/C123/p1700000000000000"
177
+ agent-slack message react add "https://workspace.slack.com/archives/C123/p1700000000000000" "eyes"
178
+ agent-slack message react remove "https://workspace.slack.com/archives/C123/p1700000000000000" "eyes"
179
+ ```
180
+
181
+ Channel mode requires `--ts`:
182
+
183
+ ```bash
184
+ agent-slack message edit "#general" "Updated text" --workspace "myteam" --ts "1770165109.628379"
185
+ agent-slack message delete "#general" --workspace "myteam" --ts "1770165109.628379"
186
+ ```
187
+
158
188
  ### Message get vs list
159
189
 
160
190
  **`message get`** fetches a single message. If the message is in a thread, it also returns thread metadata (reply count, participants) but **not** the full thread contents:
@@ -162,11 +192,11 @@ agent-slack message get "https://workspace.slack.com/archives/C123/p170000000000
162
192
  ```json
163
193
  {
164
194
  "message": { "ts": "...", "text": "...", "user": "U123", ... },
165
- "thread": { "replyCount": 5, "participants": ["U123", "U456"] }
195
+ "thread": { "ts": "...", "length": 6 }
166
196
  }
167
197
  ```
168
198
 
169
- **`message list`** fetches all messages in a thread (or channel history if no thread). Use this when you need the full conversation:
199
+ **`message list`** fetches all replies in a thread, or recent channel messages when no thread is specified. Use this when you need the full conversation:
170
200
 
171
201
  ```json
172
202
  {
@@ -181,6 +211,8 @@ When to use which:
181
211
 
182
212
  - Use `get` to check a single message or see if there's a thread worth expanding
183
213
  - Use `list` to read an entire thread conversation
214
+ - Use `list` on a channel (without `--thread-ts`) to browse recent channel messages
215
+ - Use `list` with `--with-reaction` / `--without-reaction` plus `--oldest` to filter channel history by reaction markers
184
216
 
185
217
  ### Files (snippets/images/attachments)
186
218
 
@@ -206,7 +238,7 @@ agent-slack search files "testing" --content-type snippet --limit 10
206
238
  Tips:
207
239
 
208
240
  - For reliable results, include `--channel ...` (channel-scoped search scans history/files and filters locally).
209
- - Use `--workspace https://...slack.com` when using `#channel` names across multiple workspaces.
241
+ - Use `--workspace <url-or-unique-substring>` when using `#channel` names across multiple workspaces.
210
242
 
211
243
  <!-- AI search (assistant.search.*) is described in design.doc but not currently implemented. -->
212
244