• 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
9
.vscode
1
backend
4
linear
1
slack
2
.cursorrules
README.md
C
cron.ts
deno.json
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
7/8/2025
Viewing readonly version of main branch: v250
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.ts 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 "New API key"
  4. Name it something memorable (e.g., "Val Town Slack Reminder Bot")
  5. Give it full permissions and team access for easiest set up
  6. Copy the key immediately - you won't be able to see it again!
  7. 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)

You may also manually clear all reminders with

/clear-reminders

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.