Unlisted
Like
Linear-to-Slack-Reminder
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v214View latest version
Linear-Slack Reminder Bot monitors Linear tickets and sends scheduled Slack reminders to assignees.
- Track a ticket using
/track-linear [ticket-id]
- Configure reminders - Choose how often to ping (daily, every 2 days, etc.)
- Automatic notifications - The bot sends DMs to assignees of incomplete tickets
- Escalation - After 3 reminders, the ticket creator is also notified
- Completion - When all tasks are done, the creator gets a success notification
- You'll need the
HTTP Request URL
frommain.ts
. E.g.charmaine-17829713.val.run
for Step 2 below. - You'll need to these environment variables:
SLACK_BOT_TOKEN
- Your Slack bot token (see Step 2 below)LINEAR_API_KEY
- Your Linear API key (see Step 3 below)
-
Go to api.slack.com/apps and click "Create New App"
-
Choose "From scratch" and name it (e.g., "Linear Reminder Bot")
-
Navigate to OAuth & Permissions > Scopes > add these Bot Token Scopes:
chat:write
- To send messagesusers:read
- To list workspace usersusers:read.email
- To match Linear users by emailcommands
- To handle slash commandsim:write
- To send direct messages
-
Scroll up and click "Install to [Workspace Name]" and authorize the app
-
Copy the Bot User OAuth Token (starts with
xoxb-
) -
Set up Slash Commands (under "Slash Commands" in sidebar):
- Command:
/track-linear
- Note: you can change this command, but you'll also have to change it in
slack/slashCommand.ts
in this val - Request URL:
https://[YOUR-VALTOWN-URL]/slack/commands
(You get get this via themain.ts
file) - Description: "Track a Linear ticket for reminders"
- Note: you can change this command, but you'll also have to change it in
- Command:
/track-status
- Request URL:
https://[YOUR-VALTOWN-URL]/slack/commands
- Description: "View your active Linear reminders"
- Request URL:
- Command:
-
Enable Interactivity (under "Interactivity & Shortcuts"):
- Turn ON
- Request URL:
https://[YOUR-VALTOWN-URL]/slack/interactive
- Open Linear and click your profile picture
- Go to Settings → Account → Security & access
- Direct link:
https://linear.app/YOUR-WORKSPACE/settings/account/security
- Direct link:
- Under "Personal API keys", click "New API key"
- Name it something memorable (e.g., "Val Town Slack Reminder Bot")
- Give it full permissions and team access for easiest set up
- Copy the key immediately - you won't be able to see it again!
- Add it to Val Town as the
LINEAR_API_KEY
environment variable
/track-linear VAL-123
or
/track-linear https://linear.app/team/issue/VAL-123
This will open a modal where you can:
- Select the reminder interval (daily, every 2 days, etc.)
- Map Linear assignees to Slack users
- Configure who gets notified for unassigned tickets
/track-status
Shows all your active reminders with clickable links to Linear tickets.
Reminders automatically stop when:
- All tracked tickets are marked as complete in Linear
- The parent ticket is closed (for tickets with sub-tasks)
You may also manually clear all reminders with
/clear-reminders
- Edit your
cronChecker
val in Val Town - Change
const FORCE_RUN = false
totrue
- Run the cron manually - it will send notifications immediately
- Change back to
false
when done testing