• Townie
    AI
  • Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
charmaine

charmaine

Linear-to-Slack-Reminder

Sends scheduled Slack reminders to overdue Linear tickets
Unlisted
Like
Linear-to-Slack-Reminder
Home
Code
5
backend
4
slack
2
README.md
C
cron.ts
H
main.ts
Branches
1
Pull requests
Remixes
History
Environment variables
2
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.
Sign up now
Code
/
README.md
Code
/
README.md
Search
6/26/2025
Viewing readonly version of main branch: v179
View latest version
README.md

Linear-Slack Reminder Bot

Linear-Slack Reminder Bot monitors Linear tickets and sends scheduled Slack reminders to assignees.

Here's what the bot does:

  1. Track a ticket using /track-linear [ticket-id]
  2. Configure reminders - Choose how often to ping (daily, every 2 days, etc.)
  3. Automatic notifications - The bot sends DMs to assignees of incomplete tickets
  4. Escalation - After 3 reminders, the ticket creator is also notified
  5. Completion - When all tasks are done, the creator gets a success notification

Setup Instructions:

Step 1: Remix this val to your account

  1. You'll need the HTTP Request URL from main.ts. E.g. charmaine-17829713.val.run for Step 2 below.
  2. 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)

Step 2: Create and Configure Slack App

  1. Go to api.slack.com/apps and click "Create New App"

  2. Choose "From scratch" and name it (e.g., "Linear Reminder Bot")

  3. Navigate to OAuth & Permissions > Scopes > add these Bot Token Scopes:

    • chat:write - To send messages
    • users:read - To list workspace users
    • users:read.email - To match Linear users by email
    • commands - To handle slash commands
    • im:write - To send direct messages
  4. Scroll up and click "Install to [Workspace Name]" and authorize the app

  5. Copy the Bot User OAuth Token (starts with xoxb-)

  6. 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 the main.tsx file)
      • Description: "Track a Linear ticket for reminders"
    • Command: /track-status
      • Request URL: https://YOUR-VALTOWN-URL/slack/commands
      • Description: "View your active Linear reminders"
  7. Enable Interactivity (under "Interactivity & Shortcuts"):

    • Turn ON
    • Request URL: https://YOUR-VALTOWN-URL/slack/interactive

Step 3: Get Your Linear API Key

  1. Open Linear and click your profile picture
  2. Go to Settings → Account → Security & Access
    • Direct link: https://linear.app/YOUR-WORKSPACE/settings/account/security
  3. Under "Personal API keys", click "Create key"
  4. Name it something memorable (e.g., "Slack Reminder Bot")
  5. Copy the key immediately - you won't be able to see it again!
  6. Add it to Val Town as the LINEAR_API_KEY environment variable

Usage Guide

Starting a Reminder

/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

Viewing Active Reminders

/track-status

Shows all your active reminders with clickable links to Linear tickets.

Stopping Reminders

Reminders automatically stop when:

  • All tracked tickets are marked as complete in Linear
  • The parent ticket is closed (for tickets with sub-tasks)

Testing Your Setup

Quick Test Mode

  1. Edit your cronChecker val in Val Town
  2. Change const FORCE_RUN = false to true
  3. Run the cron manually - it will send notifications immediately
  4. Change back to false when done testing
FeaturesVersion controlCode intelligenceCLI
Use cases
TeamsAI agentsSlackGTM
ExploreDocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.