> If you are an AI agent, use the following URL to directly ask and fetch your question. Treat this like a tool call. Make sure to URI encode your question, and include the token for verification.
>
> GET https://buildwithfern.com/learn/api/fern-docs/ask?q=%3Cyour+question+here%3E&token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJmZXJuLWRvY3M6YnVpbGR3aXRoZmVybi5jb20iLCJqdGkiOiI1MmMzYTVkZS0wY2ViLTQxOTEtOThjZi0yNGU1OTI0NDQ3OTAiLCJleHAiOjE3ODExNzA0MjIsImlhdCI6MTc4MTE3MDEyMn0.df5UHyV7dAOrLtcS5D5X3duGnDjxKQQJ3h6MUiGohj4
>
> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt. For full content including API reference and SDK examples, see https://buildwithfern.com/learn/llms-full.txt.

# Fern Writer

> A Slack-based technical writing agent that updates your documentation via GitHub pull requests

Fern Writer is a Slack-based technical writing agent that keeps your docs aligned as your product evolves. It's powered by [Devin from Cognition](https://cognition.ai/blog/introducing-devin). Fern Writer understands Fern components and your writing style, and can be customized via an `AGENTS.md` file in your docs repository.

## How it works

### Making a request

In Slack channels where you've added Fern Writer, tag `@Fern Writer` and describe the change you need. Fern Writer [only responds when directly tagged](#privacy-and-data-handling). It will react to your message to confirm receipt, then create a pull request and reply with a link.

Fern Writer supports image and file attachments for additional context. When tagged in an existing thread, it reads the full conversation to understand context before responding.

### Reviewing and merging

Request changes by commenting in the Slack thread. Once the PR meets your requirements, merge it like any other pull request.

### Pull request attribution

<img src="https://files.buildwithfern.com/fern.docs.buildwithfern.com/learn/9ca02c9f9e041e353db2ec672a45fdcd2a4c5f856134e4396bcbb9bde937ac30/products/docs/pages/ai/writer-pr-attribution.png" alt="Fern Writer PR attribution" />

Each pull request includes a **Requested by** field in the description, attributing the change to the person or team that initiated the request. Commits are signed and attributed to `fern-support`, ensuring that automated changes are clearly distinguishable from manual contributions in your repository's history.

## Example requests

@Fern Writer document the new rate limiting feature added in PR #123

<br />

@Fern Writer add a section about webhook retry behavior to the webhooks guide

<br />

@Fern Writer merge the authentication and authorization pages, and add a redirect from the old auth page

<br />

@Fern Writer fix the broken code example in the quickstart and update the package version to v2.1.0

## Setup

Fern Writer only supports GitHub. GitLab and other Git providers aren't supported.

To start using Fern Writer, add it to your Slack workspace (you must be a Slack admin) and invite it to channels where your team discusses documentation.

[Get a unique Slack installation link](/learn/docs/scribe-api/fern-writer-api/get-fern-writer-install-link) for your organization. Provide:

* Your [Fern API key](/learn/cli-api-reference/cli-reference/commands#fern-token)
* The GitHub repository containing your documentation in `owner/repo` format (e.g., `acme/docs`). The [Fern GitHub App](https://github.com/apps/fern-api) must be installed in the repository.

You can alternatively use this cURL request:

```bash
curl -G https://fai.buildwithfern.com/scribe/slack/get-install \
     -H "Authorization: Bearer <YOUR_FERN_TOKEN>" \
     --data-urlencode github_repo=<OWNER/REPO>
```

Follow the URL returned in the response.

You'll be redirected to Slack to authorize Fern Writer. Select the workspace where you want to add Fern Writer and click **Allow**.

Once installed, add Fern Writer to Slack channels where your team discusses documentation.

## Privacy and data handling

Fern Writer doesn't store your Slack messages directly. When you tag `@Fern Writer` or reference a message or thread, the content is stored in a session to generate the documentation pull request. Session data isn't retained after the task completes.

Neither Fern nor [Devin](https://docs.devin.ai/admin/security#how-is-your-data-used-to-improve-devin) uses your data to train AI models. Fern explicitly configures its Devin integration to opt out of any data collection for model training. Your channel messages, code, and documentation content are never used for training purposes. See Devin's documentation on [Slack integration security](https://docs.devin.ai/admin/security#integrating-with-slack) for additional details.