agent-slack 0.2.14 → 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, browse channel history, 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
10
+ ## Getting started
17
11
 
18
- ## Installation
19
-
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
@@ -60,6 +60,8 @@ agent-slack
60
60
  │ ├── get <target> # fetch 1 message (+ thread meta )
61
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
@@ -149,6 +153,12 @@ agent-slack message list "https://workspace.slack.com/archives/C123/p17000000000
149
153
 
150
154
  # Recent channel messages (browse channel history)
151
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
152
162
  ```
153
163
 
154
164
  Optional:
@@ -158,6 +168,23 @@ Optional:
158
168
  agent-slack message get "https://workspace.slack.com/archives/C123/p1700000000000000" --include-reactions
159
169
  ```
160
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
+
161
188
  ### Message get vs list
162
189
 
163
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:
@@ -165,7 +192,7 @@ agent-slack message get "https://workspace.slack.com/archives/C123/p170000000000
165
192
  ```json
166
193
  {
167
194
  "message": { "ts": "...", "text": "...", "user": "U123", ... },
168
- "thread": { "replyCount": 5, "participants": ["U123", "U456"] }
195
+ "thread": { "ts": "...", "length": 6 }
169
196
  }
170
197
  ```
171
198
 
@@ -185,6 +212,7 @@ When to use which:
185
212
  - Use `get` to check a single message or see if there's a thread worth expanding
186
213
  - Use `list` to read an entire thread conversation
187
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
188
216
 
189
217
  ### Files (snippets/images/attachments)
190
218
 
@@ -210,7 +238,7 @@ agent-slack search files "testing" --content-type snippet --limit 10
210
238
  Tips:
211
239
 
212
240
  - For reliable results, include `--channel ...` (channel-scoped search scans history/files and filters locally).
213
- - 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.
214
242
 
215
243
  <!-- AI search (assistant.search.*) is described in design.doc but not currently implemented. -->
216
244