Install
Terminal · npx$
npx skills add https://github.com/obra/superpowers --skill brainstormingWorks with Paperclip
How Todoist Api fits into a Paperclip company.
Todoist Api drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.
S
SaaS FactoryPaired
Pre-configured AI company — 18 agents, 18 skills, one-time purchase.
$27$59
Explore packSource file
SKILL.md418 linesExpandCollapse
---name: todoist-apidescription: This skill provides instructions for interacting with Todoist using the td CLI tool. It covers CRUD operations for tasks/projects/sections/labels/comments, and requires confirmation before destructive actions. Use this skill when the user wants to read, create, update, or delete Todoist data.--- # Todoist CLI Skill This skill provides procedural guidance for working with Todoist using the `td` CLI tool. ## Prerequisites The `td` CLI must be installed and authenticated. Verify with: ```bashtd auth status``` If td is not installed or not authenticated:- **Not installed**: Tell the user to install with `npm install -g @doist/todoist-cli`- **Not authenticated**: Tell the user to run `td auth login` to authenticate via OAuth ## Output Formats for Agents For machine-readable output, use these flags:- `--json` - Output as JSON array- `--ndjson` - Output as newline-delimited JSON (one object per line)- `--full` - Include all fields in JSON output (default shows essential fields only) ## Confirmation Requirement **Before executing any destructive action, always ask the user for confirmation using AskUserQuestion or similar tool.** A single confirmation suffices for a logical group of related actions. Destructive actions include:- Deleting tasks, projects, sections, labels, or comments- Completing tasks- Updating existing resources- Archiving projects Read-only operations do not require confirmation. ## Quick Commands | Command | Description ||---------|-------------|| `td add "text"` | Quick add with natural language parsing || `td today` | Tasks due today and overdue || `td upcoming [days]` | Tasks due in next N days (default: 7) || `td inbox` | Tasks in Inbox || `td completed` | Recently completed tasks | ### Quick Add Examples ```bashtd add "Buy milk tomorrow p1 #Shopping"td add "Call dentist every monday @health"td add "Review PR #Work /Code Review"``` The quick add parser supports:- Due dates: `tomorrow`, `next monday`, `Jan 15`- Priority: `p1` (urgent) through `p4` (normal)- Project: `#ProjectName`- Section: `/SectionName`- Labels: `@label1 @label2` ## Tasks ### List Tasks ```bashtd task list [options]``` **Filters:**- `--project <name>` - Filter by project name or id:xxx- `--label <name>` - Filter by label (comma-separated for multiple)- `--priority <p1-p4>` - Filter by priority- `--due <date>` - Filter by due date (today, overdue, or YYYY-MM-DD)- `--filter <query>` - Raw Todoist filter query- `--assignee <ref>` - Filter by assignee (me or id:xxx)- `--workspace <name>` - Filter to workspace- `--personal` - Filter to personal projects only **Output:**```bashtd task list --json # JSON arraytd task list --project "Work" --json # Filtered JSONtd task list --all --json # All tasks (no limit)``` ### View Task Details ```bashtd task view <ref> # Human-readabletd task view <ref> --json # JSON output``` The ref can be a task name, partial match, or `id:xxx`. ### Create Task **Quick add (natural language):**```bashtd add "Task text with #Project @label tomorrow p2"``` **Explicit flags:**```bashtd task add --content "Task text" \ --project "Work" \ --due "tomorrow" \ --priority p2 \ --labels "urgent,review" \ --description "Additional details"``` **Options:**- `--content <text>` - Task content (required)- `--due <date>` - Due date (natural language or YYYY-MM-DD)- `--deadline <date>` - Deadline date (YYYY-MM-DD)- `--priority <p1-p4>` - Priority level- `--project <name>` - Project name or id:xxx- `--section <id>` - Section ID- `--labels <a,b>` - Comma-separated labels- `--parent <ref>` - Parent task for subtask- `--description <text>` - Task description- `--assignee <ref>` - Assign to user (name, email, id:xxx, or "me")- `--duration <time>` - Duration (e.g., 30m, 1h, 2h15m) ### Update Task ```bashtd task update <ref> --content "New content" --due "next week"``` **Options:**- `--content <text>` - New content- `--due <date>` - New due date- `--deadline <date>` - Deadline date- `--no-deadline` - Remove deadline- `--priority <p1-p4>` - New priority- `--labels <a,b>` - Replace labels- `--description <text>` - New description- `--assignee <ref>` - Assign to user- `--unassign` - Remove assignee- `--duration <time>` - Duration ### Complete Task ```bashtd task complete <ref>``` ### Reopen Task ```bashtd task uncomplete id:xxx``` Note: Uncomplete requires the task ID (id:xxx format). ### Delete Task ```bashtd task delete <ref>``` ### Move Task ```bashtd task move <ref> --project "New Project"td task move <ref> --section <section-id>td task move <ref> --parent <task-ref>``` ### Open in Browser ```bashtd task browse <ref>``` ## Projects ### List Projects ```bashtd project list # Human-readable treetd project list --json # JSON arraytd project list --personal --json # Personal projects only``` ### View Project ```bashtd project view <ref>td project view <ref> --json``` ### Create Project ```bashtd project create --name "Project Name" \ --color "blue" \ --parent "Parent Project" \ --view-style board \ --favorite``` **Options:**- `--name <name>` - Project name (required)- `--color <color>` - Colour name- `--parent <ref>` - Parent project for nesting- `--view-style <style>` - "list" or "board"- `--favorite` - Mark as favourite ### Update Project ```bashtd project update <ref> --name "New Name" --color "red"``` ### Archive/Unarchive Project ```bashtd project archive <ref>td project unarchive <ref>``` ### Delete Project ```bashtd project delete <ref>``` Note: Project must have no uncompleted tasks. ### List Collaborators ```bashtd project collaborators <ref>``` ## Sections ### List Sections ```bashtd section list <project> # Human-readabletd section list <project> --json # JSON array``` ### Create Section ```bashtd section create --name "Section Name" --project "Project Name"``` ### Update Section ```bashtd section update <id> --name "New Name"``` ### Delete Section ```bashtd section delete <id>``` ## Labels ### List Labels ```bashtd label list # Human-readabletd label list --json # JSON array``` ### Create Label ```bashtd label create --name "label-name" --color "green" --favorite``` ### Update Label ```bashtd label update <ref> --name "new-name" --color "blue"``` ### Delete Label ```bashtd label delete <name>``` ## Comments ### List Comments ```bashtd comment list <task-ref> # Comments on tasktd comment list <project-ref> --project # Comments on project``` ### Add Comment ```bashtd comment add <task-ref> --content "Comment text"td comment add <project-ref> --project --content "Comment text"``` ### Update Comment ```bashtd comment update <id> --content "Updated text"``` ### Delete Comment ```bashtd comment delete <id>``` ## Reminders ### List Reminders ```bashtd reminder list <task-ref>``` ### Add Reminder ```bashtd reminder add <task-ref> --due "tomorrow 9am"``` ### Delete Reminder ```bashtd reminder delete <id>``` ## Filters ### List Saved Filters ```bashtd filter list --json``` ### Show Tasks Matching Filter ```bashtd filter show <filter-ref> --json``` ### Create Filter ```bashtd filter create --name "My Filter" --query "today & p1"``` ## Completed Tasks ```bashtd completed # Today's completed taskstd completed --since 2024-01-01 # Since specific datetd completed --project "Work" --json # Filtered JSON outputtd completed --all --json # All completed (no limit)``` **Options:**- `--since <date>` - Start date (YYYY-MM-DD), default: today- `--until <date>` - End date (YYYY-MM-DD), default: tomorrow- `--project <name>` - Filter by project ## Activity and Stats ```bashtd activity # Recent activitytd stats # Productivity stats and karma``` ## Pagination For large result sets, use `--all` to fetch everything, or handle pagination with cursors: ```bash# First pageresult=$(td task list --json --limit 50) # If there's a next_cursor in the response, continuecursor=$(echo "$result" | jq -r '.[-1].id // empty')td task list --json --limit 50 --cursor "$cursor"``` ## Reference Resolution The `<ref>` parameter in commands accepts:- Task/project/label name (partial match supported)- `id:xxx` for exact ID match- Numeric ID (interpreted as id:xxx) ## Additional Reference For detailed information on specific topics, consult:- `references/completed-tasks.md` - Alternative methods for completed task history via API- `references/filters.md` - Todoist filter query syntax for `--filter` flag ## Workflow Summary 1. **Verify authentication** - `td auth status`2. **Read operations** - Execute directly without confirmation3. **Write operations** - Ask for confirmation before executing4. **Use JSON output** - Add `--json` flag for machine-readable data5. **Handle large datasets** - Use `--all` or pagination with `--cursor`Related skills
Beautiful Mermaid
Install Beautiful Mermaid skill for Claude Code from intellectronica/agent-skills.
Context7
The context7 skill retrieves current documentation for software libraries, frameworks, and components through the Context7 API, enabling developers to access up
Markdown Converter
Install Markdown Converter skill for Claude Code from intellectronica/agent-skills.