# Slack

> Post a question to Slack and wait for a reply, or post a reply into a thread using scripts/slack.py.

- Skill: `motoya0118/slack` (Agent Skill)
- Install (CLI): `npx skillmds@latest add motoya0118/slack`
- Raw SKILL.md: https://api.skillmd.com/api/skills/motoya0118/slack/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: motoya0118 (https://skillmd.com/u/motoya0118)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/motoya0118/slack

---


# Slack Ask + Thread Reply

Use `scripts/slack.py` to post a question and wait for the first reply, or to post a reply into an existing thread.

## Run

```bash
uv run scripts/slack.py "Did you finish the task?" --interval 2 --follow-up-message "This counts as another ignore. Please reply in the thread."
```

```bash
uv run scripts/slack.py --mode reply --thread-ts 1700000000.000000 "Reply text"
```

## Inputs

- `question` is the message text (question in `ask` mode, reply in `reply` mode).
- `--mode` chooses behavior (`ask` default, `reply` posts into a thread).
- `--no-reply-hint` skips appending "Reply in thread."
- `--follow-up-message` sets the message to post when a reply is not received within the ignore window.
  - Required in `ask` mode.
- `ask` mode:
  - `--interval` sets polling interval in seconds (default: 2).
  - `--thread-ts` and `--channel` are not required.
- `reply` mode:
  - `--thread-ts` is required.
  - `--channel` overrides `SLACK_CHANNEL` (accepts name or ID).
  - `--interval` is not used.

## Outputs

Ask mode prints a single line:

```
{assistant_question: ..., user_answer: ..., is_answer: true|false, thread_ts: ..., message_ts: ...}
```

If no reply arrives before timeout, `user_answer` is `null` and `is_answer` is `false`.

Reply mode prints a single line:

```
{assistant_question: ..., user_answer: null, is_answer: false, thread_ts: ..., message_ts: ...}
```

## Notes

- Requires `SLACK_BOT_USER_OAUTH_TOKEN`.
- Optional `SLACK_USER_OAUTH_TOKEN` is used for reading replies; if unset, the bot token is reused.
- Missing history scopes will cause `missing_scope` errors; add `channels:history`, `groups:history`, `im:history`, and `mpim:history` as needed.
- The CLI unescapes `\n`, `\r`, and `\t` sequences in `question` before sending.
- Ask mode timeout is derived from env: `IGNORE_SPAN * REPLY_COUNT_LIMIT`.
- `ask` mode requires `--follow-up-message`.

