Duo Messaging: user-facing documentation for Slack integration
## Problem
Once the Slack messaging integration is available to users, there will be no user-facing documentation explaining how the feature works, how to set it up, or what to expect. The [ADR 008](https://gitlab.com/gitlab-com/content-sites/handbook/-/merge_requests/19020) covers the architecture but is not a user doc.
## Proposal
Create user-facing documentation. The exact scope will depend on what ships and how the feature evolves, but the following areas should be covered:
### User guide
- How to trigger Duo from Slack (`@Duo <task>` in any channel where the bot is installed)
- Thread context: Duo reads the full conversation thread as context for the task
- Response lifecycle: :eyes: reaction → agent works → threaded reply with result → :white_check_mark: reaction
- Error states and what they mean
### Setup / prerequisites
- GitLab Slack integration must be installed with bot capabilities
- User must have a linked Slack :left_right_arrow: GitLab account
- User must have `duo_default_namespace` configured (or be prompted to set it)
- Duo seat must be available in the namespace
### Slack app permissions
The Duo Slack integration requires the following additional OAuth scopes beyond the base GitLab Slack app:
| Scope | Purpose |
|-------|---------|
| `app_mentions:read` | Allows the bot to receive events when a user `@mentions` it in a channel |
| `channels:history` | Reads public channel conversation history to provide thread context to the agent |
| `groups:history` | Reads private channel conversation history to provide thread context to the agent |
| `reactions:write` | Adds emoji reactions (`:eyes:`, `:white_check_mark:`) to messages to indicate agent lifecycle status |
**Note:** These scopes are added to the GitLab Slack app manifest. Existing workspace installations will only receive the new scopes after re-authorizing (reinstalling) the app. New installations will get them automatically. The `channels:history` and `groups:history` scopes mean that conversation content is sent to an LLM — this should be clearly communicated to users and administrators.
### Customization
- What the `duo-workspace` project is and when it gets created
- How to customize the agent environment (Docker image, `AGENTS.md`, CI/CD variables, runner tags)
This is a placeholder issue — the specifics will be refined as the implementation lands and the feature matures toward GA.
### Error message updates
We currently have a bunch of error messages in the `app_mention_service.rb` and potentially also in the slack messaging adapter to be built. We should adjust the error messages and add a link to the docs.
## Related
- Parent issue: https://gitlab.com/gitlab-org/gitlab/-/work_items/590434
- ADR: https://gitlab.com/gitlab-com/content-sites/handbook/-/merge_requests/19020
- Manifest & dogfooding decisions: https://gitlab.com/gitlab-org/gitlab/-/work_items/598661
task