Product Managers of early-stage products all share one thing in common: they would love to see the length of their backlog of lower-priority issues find its way to zero.

At WayScript, we have a simple prioritization system of P0-P3 labels, each with different time-to-resolve expectations. Our engineering leads are then able to use these prioritizations to intermix bug fixes, change requests, or support issues between their other development priorities during cycle planning.

But constantly adjusting due dates based on the latest priorities is cumbersome, so lower-priority issues inevitably get left behind. So we created a simple task, running on WayScript, that works with our issue management tool, Linear, to elevate stale issues that are past our time-to-resolve expectations by sending a Slack message.

If your team uses Linear and would find this useful, clone and customize our simple Node script to setup your own stale issues reporting task.


Setup instructions:

  1. Clone the stale-linear-issues-task Lair to your workspace

You must have a WayScript account with an active workspace to clone a published Lair. If you are new to WayScript, sign-up at app.wayscript.com.

2.   Clone post-to-slack Lair to your workspace

WayScript is built on the idea that all internal tools should align with a services-oriented-architecture, where instead of replicating code between tools, you expose services for other tools to use. We have setup a simple Slack microservice that you can clone to your workspace that will serve as the mechanism we use to send a Slack message to a specific channel.

Follow the instructions on the README to connect the microservice to your Slack workspace. Then copy the endpoint generated for the Lair's production environment to use as a service path.

3.   Customize your Linear labels and expected time-to-resolve

In the list specified below, change the labels and specified time-to-resolve to what you use in your Linear flow. If you don't use labels for this purpose, you can also modify this tool to query issues by priority level or other characteristics. Refer to Linear's SDK documentation for more details.

// Add labels names and expected time-to-resolve
const label_configuration = [
  {
    "priority_label": "P0",
    "time_to_resolve": 1
  },
  {
    "priority_label": "P1",
    "time_to_resolve": 7
  },
  {
    "priority_label": "P2",
    "time_to_resolve": 14
  },
  {
    "priority_label": "P3",
    "time_to_resolve": 28
  },
]

Also, modify the slack_channel to where you would like to send your Slack message and set the slack_flag to true.

const slack_channel = "product";
const slack_flag = true;

4.   Generate your Linear API key

Navigate to your Linear settings and select Account > API (https://linear.app/wayscript/settings/api). Generate a personal API key and copy its value.

5.   Add your Linear API key and Slack service path as a secrets

Create a .secrets file in your Lair and add your Linear API key and Slack service path under the keys LINEAR_API_KEY and SLACK_SERVICE_PATH.

6.   Modify your tasks cron schedule

By default, the task is scheduled to run weekly at 9:00am UTC. You can modify the crontab syntax for the configured cron trigger to run the task on a different schedule.

7.   Deploy your task

Then, click on the 🚀  "Deploy" tab and press deploy. This provisions an identical production environment for your Lair with all your Lair's files and configuration. Your cron trigger will only execute in your Lair's production environment.

That's it!

Now, you should receive a weekly Slack message with a list of stale issues from your Linear workspace!

Example Slack message from Linear bot