A powerful Slack bot integrated with Linear that helps teams manage feature requests, track team member workloads, and maintain project priorities.
- Smart Message Processing: Automatically detects feature requests and status queries
- Linear Integration: Fetches and creates tickets in Linear
- Conversation Flow: Guides users through feature request creation with clarifying questions
- Team Status Tracking: Shows what team members are working on
- Priority Management: Displays current high-priority tasks
- Slash Commands:
/feature-requestfor direct feature requests - Reaction Handling: Upvote feature requests with 👍 emoji
- Daily Digests: Automated morning summaries
- State Management: Tracks conversation context and user states
- REST API: Full API for external integrations
teamops/
├── slackBot/ # Slack bot logic and message handling
├── linearClient/ # Linear API integration
├── server/ # Express.js backend and API routes
├── db/ # SQLite database and data management
├── package.json # Dependencies and scripts
└── env.example # Environment variables template
- Node.js 16+
- Slack App with Bot Token
- Linear API Key
- Linear Team ID
Copy env.example to .env and fill in your credentials:
cp env.example .envRequired environment variables:
SLACK_BOT_TOKEN: Your Slack bot token (xoxb-...)SLACK_SIGNING_SECRET: Your Slack app signing secretSLACK_APP_TOKEN: Your Slack app token (xapp-...)LINEAR_API_KEY: Your Linear API keyLINEAR_TEAM_ID: Your Linear team ID
npm install# Development mode with auto-restart
npm run dev
# Production mode
npm startUsers can request features in several ways:
Direct message:
"Can we support MCP connectors?"
Slash command:
/feature-request
Bot mention:
@TeamOpsBot can we add dark mode?
The bot will respond with:
- Current top 3 priorities
- Clarifying questions about the feature
- Option to create a Linear ticket
Ask about team member workloads:
"What is John working on since yesterday?"
"Show me Sarah's current tasks"
Get overview of team priorities:
"What are our current priorities?"
"Show me high priority tasks"
The bot includes a REST API for external integrations:
GET /api/feature-requests- List all feature requestsGET /api/feature-requests/:id- Get specific feature requestPUT /api/feature-requests/:id- Update feature requestGET /api/team-members- List team membersGET /api/team-members/:id/tasks- Get member's tasksGET /api/priorities- Get current prioritiesPOST /api/digest- Generate daily digest
The bot uses SQLite with the following tables:
feature_requests- Stores feature requests and their metadatauser_states- Tracks conversation states for multi-step flowsteam_members- Maps Slack users to Linear team memberslinear_tasks- Caches Linear task data
The bot automatically detects:
- Feature requests: "Can we...", "I need...", "Add support for..."
- Status queries: "What is...", "Show me...", "Current priorities"
- Team member queries: Mentions of team member names
For feature requests, the bot guides users through:
- Feature description
- Urgency level (High/Medium/Low)
- Deadline information
- Linear ticket creation
- High urgency → Priority 1 (Critical)
- Medium urgency → Priority 2 (High)
- Low urgency → Priority 3 (Medium)
- Input validation and sanitization
- Rate limiting on API endpoints
- Secure environment variable handling
- SQL injection prevention
- CORS configuration
Run tests with:
npm testThe bot includes health checks and logging:
GET /health- Application health status- Console logging for debugging
- Error handling and recovery
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details
For issues and questions:
- Check the logs for error messages
- Verify your environment variables
- Ensure your Slack app has the required permissions
- Confirm your Linear API key has proper access
npm run devnpm startFROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]Happy coding! 🚀