# Generate release notes from completed tickets

import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';

<Aside type="note" title="Request access">
  Docs Agent is available to all plans, but we grant access on request. Contact support@ekline.io to request access.
</Aside>

Turn a set of completed tickets into a clear, user-facing release note. Docs Agent reads each ticket's title, description, and comments, then rewrites the work in plain language. It groups the work into sections such as Features and Bug Fixes, then opens a pull request you can review before publishing.

This guide covers the interactive workflow in the editor. To produce release notes automatically on a recurring cadence, see [Automate release notes](#automate-release-notes).

## Before you begin

You need:

- An EkLine account with Docs Agent enabled.
- At least one repository [connected to EkLine](/agent/github-app-setup/).
- A connected ticket source. Docs Agent generates release notes from **Linear** or **Jira**. Connect one under **Settings > Organization > Integrations** (see [Integrations](/agent/integrations/)).
- The ticket identifiers you want to include, such as `ENG-100` through `ENG-110`, or a milestone or release name the agent can look up.

## Generate a release note

<Steps>
1. Log in to your [EkLine dashboard](https://ekline.io/dashboard) and click **Docs Agent** in the left navigation.

2. In the chat panel, describe the release. Name the tickets, the output sections, and the audience:

   ```
   Generate release notes for v2.1 from Linear tickets ENG-100
   through ENG-110. Group them under Features, Improvements, and
   Bug Fixes. Write for end users, one sentence per item.
   ```

3. Wait while the agent reads each ticket and drafts the release note in the editor panel.

4. Review the draft. Ask the agent to refine anything that reads inaccurately — for example, `Move the rate-limiting change under Improvements` or `Rewrite the SSO item without internal jargon`.
</Steps>

<img
    className={'rounded-2xl'}
    width={702}
    height={599}
    src={`/assets/images/docs-agent-release-notes.png`}
    alt={`The Docs Agent chat panel with a release-notes prompt that names a ticket range and the output sections`}
/>

The agent summarizes each ticket from an end-user perspective rather than copying the ticket text, so internal shorthand and implementation detail stay out of the published note.

## Structure the output

Tell the agent how to group and order entries so the release note matches your existing format.

<Tabs>
  <TabItem label="Group by type">
    ```
    Generate release notes for the tickets in the "1.4" milestone.
    Group them under Features, Improvements, and Bug Fixes. Within
    each group, list the most impactful change first.
    ```
  </TabItem>
  <TabItem label="Match an existing file">
    ```
    Generate release notes for tickets ENG-200 through ENG-215.
    Match the heading style and tone of CHANGELOG.md, and add the
    new version at the top.
    ```
  </TabItem>
  <TabItem label="Highlight breaking changes">
    ```
    Generate release notes for the v3.0 release from Jira tickets
    in the PLAT project fixVersion 3.0. Call out breaking changes
    in a separate section at the top with migration notes.
    ```
  </TabItem>
</Tabs>

<Aside type="tip" title="Write better prompts">
- **Name the version** — `"Add these under a v2.1 heading"`.
- **Set the audience** — `"Write for end users, not engineers"`.
- **Control length** — `"One sentence per item, no more than 12 words"`.
- **Point to a template** — `"Match the format of the last entry in CHANGELOG.md"`.
- **Exclude internal work** — `"Skip refactors and internal tooling changes"`.
</Aside>

## Verify the release note

Before you publish, confirm the draft is accurate and complete.

<Steps>
1. Enable **View All Changes** in the toolbar to see a diff of what the agent wrote.

2. Check that every ticket you named appears, and that no internal-only tickets slipped in.

3. Confirm version numbers, dates, and section headings match your convention.
</Steps>

The agent validates links and email addresses in the generated content and regenerates any section it finds a broken link in.

## Raise a pull request

When the draft is ready:

<Steps>
1. Click **Raise PR** in the toolbar. The agent prefills a prompt in the chat panel, such as `Open a pull request`.

2. Edit the prompt if you want to add instructions, then press **Enter**.

3. The agent opens the pull request and replies in the chat with a link so you can finish the review on GitHub.
</Steps>

To add a late-arriving ticket after the PR is open, ask the agent for the change, then click **Update PR** to push it to the same branch.

## Automate release notes

To generate release notes on a schedule instead of on demand, use the **Release Notes Generator** template for [scheduled agents](/agent/scheduled-agents/). It drafts structured release notes from completed tickets and GitHub activity since the last release-notes update, and delivers them as a pull request, a Slack message, or both.

## Troubleshooting

| Problem | Cause | Fix |
|---------|-------|-----|
| The agent can't find a ticket | The ticket source isn't connected, or the identifier is wrong | Connect Linear or Jira under **Settings > Organization > Integrations**, then confirm the ticket key and project. |
| Entries read like internal commit messages | The prompt didn't set an audience | Add `"Write for end users"` and ask the agent to rewrite items in plain language. |
| A ticket is missing from the draft | It fell outside the range or milestone you named | Name the ticket explicitly, or widen the range: `"Also include ENG-118"`. |
| Sections are in the wrong order | The default grouping doesn't match your format | Specify the sections and their order in the prompt, or point the agent at an existing changelog file to match. |

## Next steps

- [Create documentation](/agent/create/) — Generate READMEs, API references, and guides from your codebase.
- [Update and review](/agent/update-review/) — Keep documentation in sync with code changes.
- [Scheduled agents](/agent/scheduled-agents/) — Automate release notes and other recurring documentation tasks.
- [Integrations](/agent/integrations/) — Connect Linear, Jira, Slack, and more.