No description
- Rust 91%
- Nix 9%
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| devenv-rust.nix | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| flake.nix | ||
| README.md | ||
| rust-toolchain.toml | ||
linear-task-sync
Two-way synchronization between Linear issues and Taskwarrior tasks.
Features
- Pull: Sync Linear issues assigned to you into Taskwarrior tasks
- Push: Create Linear issues from Taskwarrior tasks in synced projects
- Bidirectional updates: Changes in either system propagate to the other
- Conflict resolution: Linear is the source of truth when both sides change
Installation
cargo build --release
cp target/release/linear-task-sync ~/.local/bin/
Taskwarrior Setup
Add these lines to your ~/.taskrc:
uda.linearid.type=string
uda.linearid.label=Linear ID
uda.linear_updated.type=string
uda.linear_updated.label=Linear Updated
Configuration
Run the configuration wizard:
linear-task-sync configure
This will prompt you for:
- Your Linear API key (get one from Linear Settings > API)
- Default team for new issues
- Workflow states to use for "Done" and "Canceled"
- Taskwarrior project prefixes to sync
Configuration is stored in ~/.config/linear-task-sync/config.toml.
Usage
Sync
Run a full two-way sync:
linear-task-sync sync
Preview changes without modifying anything:
linear-task-sync sync --dry-run
Show detailed output:
linear-task-sync sync --verbose
Data Mapping
| Linear | Taskwarrior | Notes |
|---|---|---|
| Issue identifier (ENG-123) | linearid UDA |
Primary key |
| Issue title | description |
Synced bidirectionally |
| Team name | Project (root) | e.g., Engineering |
| Project name | Project (sub) | e.g., Engineering.MobileApp |
| Initiative name | Tags | e.g., +Q1_Roadmap |
| State type | Status | completed/canceled maps to done/deleted |
Sync Behavior
Linear to Taskwarrior (Pull)
- New issues assigned to you create new Taskwarrior tasks
- Updated issues update the corresponding tasks
- Completed/canceled issues are reflected in task status
Taskwarrior to Linear (Push)
- New tasks in synced projects create new Linear issues
- Completed tasks mark the corresponding issue as done
- Deleted tasks mark the corresponding issue as canceled
- Title changes propagate to Linear (unless Linear also changed)
Conflict Resolution
When both Linear and Taskwarrior have changes since the last sync:
- Linear wins - the Linear value overwrites Taskwarrior
This ensures Linear remains the authoritative source for issue data.
License
MIT