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: v263View latest version
This val is under construction! It kinda works but the README is out of date as the spec is evolving to becoming an HR Onboarding Slack bot
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