Skip to main content
DevDaily can extract ticket IDs from branch names and commit messages, then fetch metadata from your project management tool to enrich standups, PR descriptions, and work summaries.

Supported Tools

GitHub Issues

Uses gh CLI (no additional auth required)

Jira

REST API v3 with email + API token

Linear

GraphQL API with API key

Notion

REST API with integration token

Quick Setup

Run the interactive setup wizard:
devdaily connect
Or specify a tool directly:
devdaily connect --tool github
devdaily connect --tool jira
devdaily connect --tool linear
devdaily connect --tool notion

Configuration

Set your project management tool in .devdaily.json:
.devdaily.json
{
  "projectManagement": {
    "tool": "github",
    "ticketPrefix": "PROJ",
    "ticketPattern": null,
    
    "jira": {
      "baseUrl": "https://yourcompany.atlassian.net",
      "useApiToken": true,
      "projectKey": "PROJ"
    },
    
    "linear": {
      "teamKey": "ENG",
      "useApi": true
    },
    
    "notion": {
      "databaseId": "your-database-id",
      "useApi": true
    }
  }
}
projectManagement.tool
enum
default:"github"
Primary project management tool: github, jira, linear, notion, or none
projectManagement.ticketPrefix
string
Ticket ID prefix (e.g., PROJ, ENG, DEV). Used to extract ticket numbers from branch names and commits.
projectManagement.ticketPattern
string (regex)
Custom regex pattern for ticket extraction (advanced). Overrides default patterns.

GitHub Issues

Authentication

GitHub Issues uses the gh CLI, which must be authenticated:
gh auth login
gh auth status
No additional configuration needed - DevDaily reuses your gh session.

Configuration

.devdaily.json
{
  "projectManagement": {
    "tool": "github"
  }
}

Ticket ID Patterns

GitHub Issues are referenced by number:
  • #123 - Issue number 123
  • gh-123 - Alternative format
Extracted from:
  • Branch names: feature/123-auth-refactor, fix/#456-bug
  • Commit messages: Fix #123: Add authentication

Example

# Create a branch referencing issue #123
git checkout -b feature/123-auth-refactor

# DevDaily will automatically fetch issue details
devdaily standup
# Output includes:
# [#123] Add OAuth2 authentication
#   Type: feature | Status: open
#   Implement OAuth2 flow with GitHub provider

Jira

Authentication

Jira requires:
  1. Base URL: Your Jira instance URL
  2. Email: Your Jira account email
  3. API Token: Generate at https://id.atlassian.com/manage-profile/security/api-tokens
1

Generate API Token

  1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
  2. Click “Create API token”
  3. Name it “DevDaily” and copy the token
2

Store Credentials

Add to ~/.config/devdaily/secrets.json:
{
  "jira": {
    "baseUrl": "https://yourcompany.atlassian.net",
    "email": "your@email.com",
    "apiToken": "your-api-token-here"
  }
}
3

Configure Tool

Set in .devdaily.json:
{
  "projectManagement": {
    "tool": "jira",
    "ticketPrefix": "PROJ",
    "jira": {
      "projectKey": "PROJ",
      "useApiToken": true
    }
  }
}
4

Test Connection

devdaily connect --test

Configuration

jira.baseUrl
string
required
Jira instance URL (e.g., https://yourcompany.atlassian.net)
jira.projectKey
string
Default project key for searches (e.g., PROJ, ENG)
jira.useApiToken
boolean
default:"true"
Use API token authentication (recommended)

Ticket ID Patterns

Jira tickets follow the format PROJECT-123:
  • PROJ-123 - Standard format
  • ENG-456 - Different project
Extracted from:
  • Branch names: feature/PROJ-123-auth, PROJ-456/implementation
  • Commit messages: PROJ-123: Add authentication

Environment Variables

export JIRA_BASE_URL="https://yourcompany.atlassian.net"
export JIRA_EMAIL="your@email.com"
export JIRA_API_TOKEN="your-token"

Example

git checkout -b feature/PROJ-123-oauth

devdaily pr --create
# Output includes:
# **Ticket No:** PROJ-123
# **Ticket link:** https://yourcompany.atlassian.net/browse/PROJ-123
# **Summary:** Implement OAuth2 authentication
# **Status:** In Progress

Linear

Authentication

Linear requires an API key:
1

Generate API Key

  1. Go to https://linear.app/settings/api
  2. Click “Create new API key”
  3. Name it “DevDaily” and copy the key
2

Store API Key

Add to ~/.config/devdaily/secrets.json:
{
  "linear": {
    "apiKey": "lin_api_..."
  }
}
3

Configure Tool

.devdaily.json
{
  "projectManagement": {
    "tool": "linear",
    "ticketPrefix": "ENG",
    "linear": {
      "teamKey": "ENG",
      "useApi": true
    }
  }
}

Configuration

linear.teamKey
string
Team identifier (e.g., ENG, DEV, PROD)
linear.useApi
boolean
default:"true"
Use Linear API (vs CLI - API recommended)

Ticket ID Patterns

Linear tickets use format TEAM-123:
  • ENG-123 - Engineering team issue
  • DEV-456 - Development team issue
Extracted from:
  • Branch names: feature/ENG-123-auth, ENG-456/bugfix
  • Commit messages: ENG-123: Implement OAuth

Environment Variables

export LINEAR_API_KEY="lin_api_..."

Example

git checkout -b feature/ENG-123-oauth

devdaily standup
# Output includes:
# [ENG-123] Implement OAuth2 authentication
#   Type: feature | Status: In Progress | Priority: high
#   Add OAuth2 flow with Google provider

Notion

Authentication

Notion requires:
  1. Integration Token: Create an integration at https://www.notion.so/my-integrations
  2. Database ID: The ID of your tasks/issues database
1

Create Integration

  1. Go to https://www.notion.so/my-integrations
  2. Click “New integration”
  3. Name it “DevDaily” and save
  4. Copy the “Internal Integration Token”
2

Share Database

  1. Open your tasks/issues database in Notion
  2. Click ”…” → “Add connections”
  3. Select your “DevDaily” integration
3

Get Database ID

From the database URL:
https://notion.so/yourworkspace/DATABASE_ID?v=...
                                 ^^^^^^^^^^^^
4

Store Credentials

~/.config/devdaily/secrets.json
{
  "notion": {
    "apiKey": "secret_...",
    "databaseId": "your-database-id"
  }
}

Configuration

notion.databaseId
string
required
Notion database ID containing tasks/issues
notion.useApi
boolean
default:"true"
Use Notion API (recommended)

Ticket ID Patterns

Notion uses UUIDs:
  • a1b2c3d4-e5f6-7890-abcd-ef1234567890 - Full UUID
  • a1b2c3d4e5f67890abcdef1234567890 - UUID without hyphens
Notion integration is limited compared to other tools because Notion doesn’t have built-in issue tracking. Best used with structured databases.

Environment Variables

export NOTION_API_KEY="secret_..."
export NOTION_DATABASE_ID="your-database-id"

Ticket Extraction

DevDaily automatically extracts ticket IDs from:

Branch Names

Common patterns:
# Standard formats
feature/PROJ-123-description
fix/PROJ-456-bugfix
bugfix/PROJ-789

# Prefixed formats
user/PROJ-123-feature
team/ENG-456-implementation

# Just the ticket
PROJ-123/description
PROJ-123-feature-name

# Numeric only (with ticketPrefix config)
feature/123-description  # Becomes PROJ-123

Commit Messages

# Reference in title
git commit -m "PROJ-123: Add authentication"
git commit -m "Fix #456: Resolve login bug"

# Reference in body
git commit -m "Add OAuth" -m "Implements PROJ-123"

# Multiple tickets
git commit -m "PROJ-123 PROJ-124: Refactor auth"

Custom Patterns

For non-standard formats, use a custom regex:
.devdaily.json
{
  "projectManagement": {
    "ticketPattern": "\\b(CUSTOM-\\d+)\\b"
  }
}

Fetched Metadata

DevDaily fetches the following ticket data:
id
string
Ticket ID (e.g., PROJ-123, #456, ENG-789)
title
string
Ticket title/summary
description
string
Full ticket description
status
string
Current status (e.g., In Progress, Done, open)
type
enum
Issue type: bug, feature, task, story, epic, or other
priority
enum
Priority level: low, medium, high, or critical
assignee
string
Assigned person’s name
labels
string[]
Associated labels/tags
url
string
Direct link to ticket

Testing Connection

Verify your PM integration is working:
# Test connection and auth
devdaily connect --test

# Output:
# ✓ GitHub: Authenticated as username (repo: owner/repo)
# ✓ Connection successful (120ms)

# Fetch a specific ticket
devdaily standup --ticket PROJ-123 --debug

Usage in Commands

Standup

Tickets are automatically included in standups:
devdaily standup

# Output includes ticket metadata:
# Yesterday:
# - [PROJ-123] Implement OAuth2 authentication
#   → Added Google OAuth provider
#   → Updated user model
#   📎 https://yourcompany.atlassian.net/browse/PROJ-123

PR Descriptions

Ticket data enriches PR descriptions:
devdaily pr --create

# PR body includes:
# ## Ticket
# **Ticket No:** PROJ-123
# **Ticket link:** https://yourcompany.atlassian.net/browse/PROJ-123
# **Summary:** Implement OAuth2 authentication

Weekly Summaries

devdaily week

# Groups work by ticket:
# This Week:
# 
# PROJ-123: Implement OAuth2 authentication
# - Added Google OAuth provider
# - Updated user model
# - Fixed token refresh bug

Disabling PM Integration

To disable project management integration:
.devdaily.json
{
  "projectManagement": {
    "tool": "none"
  }
}
DevDaily will still extract ticket IDs from branch names but won’t fetch metadata.

Troubleshooting

Authentication Errors

  • Verify email and API token in secrets.json
  • Check token hasn’t expired
  • Ensure baseUrl is correct (no trailing slash)
  • Test: curl -u email:token https://yourcompany.atlassian.net/rest/api/3/myself
  • Run gh auth login
  • Verify: gh auth status
  • Ensure gh CLI version >= 2.0
  • Verify database ID is correct
  • Check integration has access to database
  • Re-share database with integration

Tickets Not Found

  1. Check ticket ID format:
    devdaily standup --debug
    # Shows extracted ticket IDs
    
  2. Verify ticketPrefix:
    {
      "projectManagement": {
        "ticketPrefix": "PROJ"  // Must match your tickets
      }
    }
    
  3. Test extraction manually:
    echo "feature/PROJ-123-auth" | grep -oE '[A-Z]+-[0-9]+'
    

Rate Limiting

API rate limits:
  • Jira: 10 req/sec per user
  • Linear: 2000 req/hour
  • GitHub: 5000 req/hour (authenticated)
DevDaily caches ticket data during command execution to minimize API calls.

Best Practices

1

Use consistent branch naming

Always include ticket ID in branch names:
git checkout -b feature/PROJ-123-description
2

Reference tickets in commits

git commit -m "PROJ-123: Add OAuth provider"
3

Configure ticketPrefix

Set your team’s standard prefix:
{ "projectManagement": { "ticketPrefix": "PROJ" } }
4

Test before relying on automation

devdaily connect --test
devdaily standup --ticket PROJ-123 --debug

Configuration Overview

Learn about all configuration options

PR Templates

Customize how ticket data appears in PRs