Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill fetches open tasks assigned to the user from the Linear API and generates a markdown todo list file in the project root. This skill should be used when the user asks about their work items, wants to see what they need to work on, or requests to load/sync their Linear tasks. Requires Python 3.7+, requests, mdutils, and python-dotenv packages. Requires LINEAR_API_KEY in .env file.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 123% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 189% | 0% |
| case-24 | ✗→✓ | ▲ Improved | 69% | 0% |
Automatically fetch assigned Linear tasks and generate a comprehensive markdown todo list in your project root. This skill queries the Linear GraphQL API to retrieve all open tasks assigned to you, organizing them by project with full details including status, priority, labels, estimates, and due dates.
Install the Python dependencies:
bashpip install requests mdutils python-dotenv
Or using conda:
bashconda install requests python-dotenv pip install mdutils
Create a .env file in your project root:
bashcp .claude/skills/linear-todo-sync/assets/.env.example .env
Edit .env and add your API key:
LINEAR_API_KEY=lin_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxImportant: Ensure .env is in your .gitignore to protect your API key.
Test the configuration by running:
bashpython .claude/skills/linear-todo-sync/scripts/sync_linear_tasks.py
A markdown file named linear-todos-YYYY-MM-DD.md should appear in your project root.
When triggered, this skill:
.env file in your project rootlinear-todos-YYYY-MM-DD.md in the project rootThe generated markdown file provides a comprehensive view of your work with all relevant task metadata, making it easy to review priorities and plan your day.
Trigger this skill with phrases like:
The skill will execute the sync script and create a dated markdown file in your project root.
The markdown file follows this structure:
markdown# Linear Tasks - January 18, 2025 Generated: 2025-01-18 09:30:45 Total Tasks: 12 ## Project Alpha ### Implement user authentication (High) - **Status**: In Progress - **Labels**: backend, security - **Estimate**: 5 points - **Due**: 2025-01-20 - **Link**: https://linear.app/team/issue/PROJ-123 Add JWT-based authentication to the API endpoints... ### Fix login bug (Urgent) - **Status**: Todo - **Labels**: bug, frontend - **Estimate**: 2 points - **Due**: 2025-01-19 - **Link**: https://linear.app/team/issue/PROJ-124 Users cannot log in when using Safari... ## Project Beta ...
To modify the skill's behavior, edit scripts/sync_linear_tasks.py:
Modify the QUERY variable to fetch additional fields:
pythonQUERY = """ query { viewer { assignedIssues(filter: { state: { type: { nin: ["completed", "canceled"] } } }) { nodes { id title description state { name } priority labels { nodes { name } } estimate dueDate project { name } url # Add more fields here createdAt updatedAt assignee { name } } } } } """
Modify the filter in the GraphQL query to change which tasks are fetched:
python# Include completed tasks from the last week filter: { state: { type: { nin: ["canceled"] } } completedAt: { gte: "2025-01-11" } }
Customize the markdown generation in the generate_markdown() function to change structure, add sections, or include different metadata.
Update the output_path variable in main():
python# Save to a different directory output_path = os.path.join(project_root, "docs", filename)
Cause: The .env file is missing or doesn't contain the API key.
Solution:
.env exists in your project root (not in the skill directory)LINEAR_API_KEY=lin_api_...= signCause: The API key is incorrect or expired.
Solution:
.env with the correct keyCause: Cannot connect to Linear API (network issue, timeout, or API downtime).
Solution:
Cause: Too many API requests in a short period.
Solution:
Cause: You have no assigned tasks in non-completed states.
Solution: This is informational only. The skill will still create a markdown file indicating zero tasks.
Cause: Insufficient file system permissions.
Solution:
Cause: File created in unexpected location or script error.
Solution:
python scripts/sync_linear_tasks.py --verbose.env file: Always add .env to .gitignorepip install --upgrade requests mdutils python-dotenvAdd to your shell profile (.bashrc, .zshrc) to sync on terminal startup:
bash# Auto-sync Linear tasks daily if [ -f "/path/to/project/.env" ]; then python /path/to/project/.claude/skills/linear-todo-sync/scripts/sync_linear_tasks.py fi
Create a post-checkout hook to sync after changing branches:
bash#!/bin/bash # .git/hooks/post-checkout python .claude/skills/linear-todo-sync/scripts/sync_linear_tasks.py
Use in continuous integration to track team tasks:
yaml# .github/workflows/sync-tasks.yml - name: Sync Linear Tasks run: | pip install requests mdutils python-dotenv python .claude/skills/linear-todo-sync/scripts/sync_linear_tasks.py env: LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
For detailed API reference and advanced GraphQL queries, see the Linear API documentation.
Other measured skills in the registry, with their headline benchmark lift.