todoist-ticket-sync

Synchronizes Jira ticket lifecycle events with Todoist task updates.

1|Updated Aug 6, 2025
One-click install
npx skills add https://github.com/azaidrahman/zaid-sani-dotfiles --skill todoist-ticket-sync-azaidrahman
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: todoist-ticket-sync
Source: https://github.com/azaidrahman/zaid-sani-dotfiles/tree/main/dot_claude/skills/todoist-ticket-sync
Command: npx skills add https://github.com/azaidrahman/zaid-sani-dotfiles --skill todoist-ticket-sync-azaidrahman

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? When work on a tracker ticket starts or ends, the tracker changes but the personal Todoist board drifts out of sync. This Skill keeps Todoist level with Jira by updating the matching task automatically when a branch or worktree is created or deleted for a ticket key like GTI-273. ## Core Features & Use Cases - Automatic task updates on ticket start: Sets priority to p2 and due date to today on the matching Todoist subtask, without asking, when exactly one task matches the key. - Deterministic description sync: A bundled Python script converts Jira ticket bodies from Atlassian Document Format to Markdown and writes them into Todoist task descriptions, skipping tasks that are already correct. - Safe completion on ticket end: Verifies the branch actually merged before completing the subtask, and asks before closing a parent workstream. - Use Case: You run "start GTI-673" and a worktree is created; the Skill finds the Todoist subtask titled "GTI-673 db: add Cloud SQL", sets its priority and due date, and reports the change in one line. ## Quick Start Tell the assistant "I'm starting work on GTI-673" and it will find the matching Todoist task and update its priority and due date.

Frequently Asked Questions about todoist-ticket-sync

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I sync Jira tickets with Todoist tasks automatically?

Run the bundled ticket-to-todoist.py script with a ticket key and --apply to write the ticket body into the matching Todoist task description. The Skill also updates priority and due date through Todoist MCP tools when a ticket starts or ends.

How does the script convert Jira ticket descriptions to Markdown?

It reads the ticket through the twg CLI, converts the Atlassian Document Format body to Markdown, cuts the text at the first horizontal rule, and appends a link to the ticket. The transform is deterministic, so rerunning it on an up-to-date task changes nothing.

Can I use a tracker other than Jira with this workflow?

Yes, the script uses a provider registry. Subclass TicketProvider with a name, key pattern, and fetch, body, and url methods, then add it to the PROVIDERS registry and select it with the TICKET_PROVIDER environment variable.

Why does the script hang when reading the Todoist token from 1Password?

Without a service account token, op read falls back to the 1Password desktop app and waits for it to be unlocked. The script reads a service account token from the keychain entry op-service-account-token-personal to keep the read headless.

Why should I never set sectionId on a Todoist subtask?

Todoist treats a section move as a move out of the parent, so the subtask silently leaves its workstream. Move the workstream parent to the section instead, or change only the subtask's priority and due date.