activity

jongwony's avatarfrom jongwony

Generate Linear activity reports for date ranges.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 1, 2026

When & Why to Use This Skill

The Linear Activity Reporter is a specialized Claude skill designed to automate the collection and summarization of workspace data from Linear. By leveraging the Model Context Protocol (MCP), it fetches issues, projects, cycles, and comments to generate professional, time-organized reports in both Markdown and JSON formats. This tool is essential for developers and project managers who need to track progress, audit contributions, and maintain clear visibility across multiple teams and date ranges.

Use Cases

  • Daily Standup Preparation: Quickly generate a 'what I did yesterday' summary to streamline team syncs and communication.
  • Weekly Progress Reporting: Create comprehensive markdown reports of all completed issues and updated projects for stakeholders or management.
  • Performance Reviews: Aggregate personal or team activity over specific quarters to provide data-driven evidence for performance evaluations.
  • Calendar & Time Tracking Integration: Export machine-readable JSON activity logs to sync work history with Google Calendar or external productivity dashboards.
nameactivity
description|
contextfork
agentlinear-collector

Linear Activity Reporter

Collect Linear activity data via MCP and generate time-organized markdown reports.

Workflow

Phase 1: Initialize Context

user = mcp__plugin_linear_linear__get_user(query="me")
teams = mcp__plugin_linear_linear__list_teams(limit=250)

Extract: userId, displayName, email, teamIds, teamNames

On error: Check MCP configuration in ~/.claude.json, verify Linear workspace access.

Multiple teams: Present team selection via AskUserQuestion with multiSelect.

Phase 2: Calculate Date Range

Request Action
Explicit date ("2025-11-05") Use directly
Relative ("yesterday", "last week") Calculate with date command
Not specified Prompt with AskUserQuestion

Convert to ISO 8601: YYYY-MM-DDTHH:MM:SSZ

Phase 3: Collect Activity Data

Execute parallel MCP calls per team:

Data Type MCP Function Key Filters
Issues Created list_issues assignee="me", createdAt
Issues Updated list_issues assignee="me", updatedAt
Comments list_comments issueId (filter date client-side)
Projects list_projects member="me", createdAt/updatedAt
Cycles list_cycles teamId (filter date client-side)

MCP uses >= comparison only. Filter end date client-side.

For API details: references/api-reference.md

Phase 4: Process Data

  1. Convert UTC to local timezone (detect via datetime.now().astimezone())
  2. Group by hour (00-23) and team
  3. Categorize by activity type
  4. Deduplicate by issue/project ID

Phase 5: Generate Reports

Output directory: ~/.claude/tmp/linear-activity/reports/

mkdir -p ~/.claude/tmp/linear-activity/reports/

Files:

  • YYYY-MM-DD.md - Human-readable markdown
  • YYYY-MM-DD.json - Machine-readable (for calendar-sync)

For format specification: references/output-template.md

Activity Icons

Icon Type
🆕 Issue Created
📝 Issue Updated
💬 Issue Comment
📊 Project Created
🔧 Project Updated
🔄 Cycle Created/Updated

Usage Examples

Request Result
"Linear activity yesterday" Yesterday's activities, all teams
"Linear report 2025-11-01 to today" Date range report
"Last week's Linear activity" Last 7 days report
"Engineering team activity" Specific team filter

Integration

JSON output compatible with calendar-sync skill:

linear-activity → YYYY-MM-DD.json → calendar-sync → Google Calendar

Troubleshooting

MCP Connection Error

Symptom: mcp__plugin_linear_linear__get_user fails

Solutions:

  1. Verify ~/.claude.json MCP configuration
  2. Test: mcp__plugin_linear_linear__list_teams()
  3. Check Linear workspace access
  4. Re-authenticate if needed

No Activities Found

Expand date range, verify assignee="me" filter, check team access.

Missing Data (API Limit)

API limit: 250 items. Narrow date range or split into multiple queries.

Timezone Issues

Set explicitly: export TZ=Asia/Seoul

References