Skip to content
Orbital

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.

triage-issues.dot
digraph triage_issues {
graph [version="1", entry="triage", description="Read an issue tracker's open issues and propose a label, a priority and a next step for each, changing nothing", defaults="goal='Triage the open issues opened in the last seven days.'", tool_access="Triage { tools: read, web, mcp; }"]
triage [role="Researcher", tool_access="Triage", prompt_file="prompts/triage-issues/triage.md"]
done [shape="Msquare", outcome="success"]
triage -> done
}

triage has one step, then done.

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;
  • the workflow: download the archive.

The workflow defines its own tool access, Triage. It allows reading files, browsing the web and using connected services. It does not allow changing files or running commands. Triage is not one of the tool access blocks Orbital ships.

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

  2. Check it:

    Terminal window
    orbital validate ~/.orbital/workflows/triage-issues.dot
The Workflows page listing workflows with their source, Clone and Export actions, and Import and New workflow buttons.
Once unpacked, the workflow shows on the Workflows page.

The archive holds the workflow above and its prompt:

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.
  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:

    Triage the open issues in the ENG team in Linear that have no label.
  3. Choose Start run.

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.
The agent's answer holds the triage table.

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

  • Change the labels and priorities in triage.md to the ones your team uses.
  • Run it every morning with a Schedule trigger.
  • The workflow defines the Triage tool access in its graph line, and the triage step uses it. Roles and tool access explains the block.