> For the index of every page in Orbital's docs, read https://docs.runorbital.dev/llms.txt.

# Triage issues

> Propose a label, priority and next step for each open issue, without changing the tracker

In this example you triage a backlog. The `triage-issues` workflow reads the issues you name and answers with one table that gives each issue a proposed label, a priority and a next step. It changes nothing in the tracker. You decide what to apply.

About five minutes to set up.

```toml title="triage-issues.toml"
version = 3
entry = "steps.triage"
description = "Read an issue tracker's open issues and propose a label, a priority and a next step for each, changing nothing"
style = "researcher"

[inputs.goal]
default = "Triage the open issues opened in the last seven days."

[steps.triage]
prompt_file = "prompts/triage-issues/triage.md"
next = "steps.done"

[steps.done]
kind = "terminal"
```

![triage has one step, then done.](/triage-issues.svg?v=9444b8fdb4)

## Before you start

You need:

- a signed-in harness with the connected service for your tracker. The agent reads the tracker with the connected services your harness has. For GitHub Issues or Linear, set up that service's MCP server in your harness first, for example Linear's MCP server in Claude Code;
- any project. The workflow does not read the project's files, and the project does not need to be a Git repository, unless you run it with Codex, which needs one. See [plain folders and Git](/projects/#plain-folders-and-git);
- the workflow: [download the archive](/triage-issues.zip).

The workflow's top-level `style = "researcher"` gives the step the shipped `researcher` style. The prompt tells the agent not to change any issue or file, and the step changes nothing else.

:::note
The prompt is the only limit on what the agent does. Its harness and connected services can still change files or issues, so read the prompt before you start the run, and keep the [permissions](/styles/#permissions) of the style in mind.
:::

## 1. Add the workflow

1. Unpack the archive into your workflow library, `~/.orbital/workflows/`. Keep every relative path.

2. Check it:

   ```sh
   orbital validate ~/.orbital/workflows/triage-issues.toml
   ```

![The Workflows page listing workflows with their source, Clone and Export actions, and Import and New workflow buttons.](/screenshots/workflows-page.webp?v=991e5fde13)

*Once unpacked, the workflow shows on the Workflows page.*

The archive holds the workflow above and its prompt:

```md title="prompts/triage-issues/triage.md"
Triage the issues this goal names: {{ inputs.goal }}

Read the issues with the tools your tracker offers, such as its connected service or its web pages. Read each issue's title, description and comments. Do not label, assign, comment on, close or otherwise change any issue, and do not change any file.

For each issue, propose:

1. a label: bug, feature, question, documentation or duplicate;
2. a priority: urgent, soon or later, with one sentence on why;
3. a next step: ask the reporter a named question, reproduce it, link the duplicate, or ready to build.

Answer with one table: issue, title, label, priority, next step. Under the table, list the issues you could not read and why. The table is the run's final answer, so end with it and nothing else.
```

## 2. Start the run

1. Choose **New task**, pick any project and choose the `triage-issues` workflow.

2. Write which issues to triage, or leave the default: "Triage the open issues opened in the last seven days." For example:

   ```text
   Triage the open issues in the ENG team in Linear that have no label.
   ```

3. Choose **Start run**.

## 3. Read the table

The answer is the step's reply, the last message in the **Session** tab. It is one table with the issue, its title, the proposed label, priority and next step. Under the table, the agent lists any issue it could not read and why.

![A run page with an agent step selected, showing its prompt, the agent's answer and recorded values, with Run facts and a Steps list in the dock.](/screenshots/run-hero.webp?v=4fa21a573c)

*The agent's answer holds the triage table.*

## 4. Apply what you agree with

The run changes nothing in the tracker. Apply the labels, priorities and next steps you agree with in your tracker yourself.

## Make it yours

- Change the labels and priorities in `triage.md` to the ones your team uses.
- Run it every morning with a Schedule [trigger](/triggers/).
- Give the step another style, or your own, with `style` at the top of `triage-issues.toml`. [Styles and personas](/styles/) explains what a style sets.

## Related

- [Styles and personas](/styles/): what a style sets for a step
- [Make a trigger rule](/triggers/make-a-rule/): run the triage every morning
- [Write a research report](/examples/research-report/): another workflow that changes no files
