slack-term 1.25.0 → 1.26.1

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
@@ -143,13 +143,17 @@ The other two are the flags:
143
143
  They stack with each other and with ❗/❓; `--state stuck` matches a task with any of them.
144
144
 
145
145
  ```sh
146
- slack todo ls # --state open (default): marked, not done/dropped
146
+ # Two listings, split by whose reactions count — the distinction is the command,
147
+ # not a flag, so "everyone's list" and "my list" can't be confused at a glance.
148
+ slack todo ls # EVERYONE's tasks (has:)
149
+ slack mytodo ls # only tasks YOU reacted to (hasmy:)
150
+
147
151
  slack todo ls --state untriaged # marked, no progress reaction yet
148
152
  slack todo ls --state doing --in "#eng" # scoped to a channel
149
- slack todo ls --state stuck # unfinished AND carrying a reason flag
153
+ slack mytodo ls --state stuck # my unfinished tasks carrying a reason flag
150
154
  slack todo ls --state stuck --from "@alice" # …and it was alice who wrote it
151
- slack todo ls --from me # tasks on my own messages
152
- slack todo ls --state done --shared # anyone's reactions, not just mine
155
+ slack todo ls --from me # tasks on my own messages (any reactor)
156
+ slack todo ls --mine # same as `slack mytodo ls`
153
157
  slack todo set "#eng:1700000000.000100" doing
154
158
  slack todo flag "<permalink>" waiting # their ball now
155
159
  slack todo flag "<permalink>" needs-discussion
@@ -160,10 +164,15 @@ slack todo doctor --in "#eng" --fix # keep the highest-priority one
160
164
 
161
165
  Notes:
162
166
 
163
- - `todo ls` is read-only and runs **exactly one** `search.messages` call — priority is
164
- expressed as negated `hasmy:` terms in the query, not as multiple searches
165
- (`search.messages` is Tier 2, ~20 req/min). By default it matches only *your* reactions
166
- (`hasmy:`); `--shared` switches to anyone's (`has:`). Slack's search index lags a little
167
+ - **`todo ls` vs `mytodo ls`** — `todo ls` matches anyone's reactions (`has:`), `mytodo ls`
168
+ only your own (`hasmy:`). Everything else about them is identical. Both print a
169
+ `From: @handle (Uxxxx) — Workspace` line first, because `hasmy:` resolves against
170
+ whichever account the token belongs to — "my tasks" means nothing until you know who
171
+ *my* is, and a stale profile otherwise lists someone else's list without saying so.
172
+ (`todo ls --mine` is a one-off shortcut to the narrow view.)
173
+ - Both are read-only and run **exactly one** `search.messages` call — priority is expressed
174
+ as negated `has:`/`hasmy:` terms in the query, not as multiple searches
175
+ (`search.messages` is Tier 2, ~20 req/min). Slack's search index lags a little
167
176
  behind `reactions.add`, so a just-set task may take a moment to appear.
168
177
  - `todo set` **adds the new reaction before removing the old ones**, and removes serially.
169
178
  The reverse order would leave a window with no progress reaction at all — a crash or a
@@ -287,6 +296,19 @@ delivery (3-second interval). Supports `--since=<duration>` for backfill,
287
296
  that mention you. Uses `conversations.history?oldest=<ts>` as a cursor so
288
297
  already-seen messages are never re-printed, even across reconnects.
289
298
 
299
+ ## Ecosystem
300
+
301
+ This CLI is the human-comms surface of the
302
+ [agent-yes](https://github.com/snomiao/agent-yes) fleet: agent-yes runs, watches and
303
+ delegates to AI coding agents, and `slack` is how they read and answer the humans they
304
+ work with. Neither depends on the other — they share a stance rather than a library:
305
+ file-based state over daemons, one command surface across two runtimes, gates on the
306
+ irreversible and warnings on the merely unwise, and no real operational data in a public
307
+ repo.
308
+
309
+ A write-up of the design decisions behind the confirm gate lives on the agent-yes lab:
310
+ [A confirm code that goes stale](https://lab.agent-yes.com/2026-08-11-slack-term-safe-writes).
311
+
290
312
  ## Related / prior art
291
313
 
292
314
  - [`slkcli`](https://www.npmjs.com/package/slkcli) by
package/SKILL.md CHANGED
@@ -8,11 +8,15 @@ description: "Terminal Slack CLI — read news/mentions/DMs/channel history, ful
8
8
  A lightweight Slack CLI for quick workspace interaction from the terminal.
9
9
  Two implementations share one command surface (parity-tested):
10
10
 
11
- - **TypeScript** (bun-first), published as `@snomiao/slack` on npm.
11
+ - **TypeScript** (bun-first), published as `slack-term` on npm.
12
12
  - **Rust** native binary, installable via `cargo install`.
13
13
 
14
14
  Binary name: `slack` (also aliased as `sl` / invoked via `sc sl ...` in some setups).
15
15
 
16
+ Part of the [agent-yes](https://github.com/snomiao/agent-yes) ecosystem — this is the CLI an
17
+ agent uses to talk to humans. Design notes:
18
+ [lab.agent-yes.com](https://lab.agent-yes.com/2026-08-11-slack-term-safe-writes).
19
+
16
20
  ## When to use
17
21
 
18
22
  - User wants to read Slack activity, mentions, DMs, or channel history without opening the Slack app.
@@ -25,10 +29,13 @@ Binary name: `slack` (also aliased as `sl` / invoked via `sc sl ...` in some set
25
29
  TypeScript (recommended — any platform with Node 18+):
26
30
 
27
31
  ```sh
28
- npm install -g @snomiao/slack
29
- # or: bun add -g @snomiao/slack / pnpm add -g @snomiao/slack
32
+ npm install -g slack-term
33
+ # or: bun add -g slack-term / pnpm add -g slack-term
30
34
  ```
31
35
 
36
+ > Previously published as `@snomiao/slack`; that name is deprecated on npm and
37
+ > no longer updated. Install `slack-term`.
38
+
32
39
  Rust (native binary):
33
40
 
34
41
  ```sh
@@ -79,9 +86,10 @@ slack react "#general:1700000000.000100" white_check_mark
79
86
  slack react "<permalink>" eyes --remove # take it back
80
87
 
81
88
  # Task tracking on reactions — 📌 marks a task, a second reaction holds progress
82
- slack todo ls # my open tasks (read-only, 1 search)
89
+ slack todo ls # EVERYONE's open tasks (has:)
90
+ slack mytodo ls # only tasks YOU reacted to (hasmy:)
83
91
  slack todo ls --state untriaged --in "#general" # marked but no progress yet
84
- slack todo ls --state stuck # unfinished + a reason flag
92
+ slack mytodo ls --state stuck # my unfinished tasks + a reason flag
85
93
  slack todo set "#general:1700000000.000100" doing # pending|doing|done|dropped
86
94
  slack todo ls --state stuck --from "@alice" # …and alice wrote it
87
95
  slack todo flag "<permalink>" waiting # alert|needs-discussion|waiting|blocked
@@ -148,8 +156,13 @@ Reason flags stack independently of progress and of each other: ❗ `exclamation
148
156
 
149
157
  (⏳ `hourglass_flowing_sand` pending already means "my ball", which is why only these two are needed.)
150
158
 
151
- - `todo ls` is read-only and issues **one** `search.messages` call; priority is encoded as
152
- negated `hasmy:` terms. Default is `hasmy:` (my reactions only), `--shared` uses `has:`.
159
+ - **`todo ls` = anyone's reactions (`has:`), `mytodo ls` = only yours (`hasmy:`).** Two
160
+ commands rather than a flag, so the two lists can't be mistaken for each other. Both
161
+ print `From: @handle (Uxxxx) — Workspace` first: `hasmy:` resolves against whoever the
162
+ token is, so "my tasks" is only meaningful once you know who *my* is. `todo ls --mine`
163
+ is a shortcut to the narrow view; `--shared` is accepted but is now the default.
164
+ - Both are read-only and issue **one** `search.messages` call; priority is encoded as
165
+ negated `has:`/`hasmy:` terms.
153
166
  `search.messages` returns no reaction data, so this filtering can only happen in the
154
167
  query. The search index lags slightly behind `reactions.add`.
155
168
  - `todo set` adds the target reaction **first**, then removes the stale ones one at a time.