---
name: vikunja-tasks
description: Manage tasks in Connor's Vikunja instance using the vik CLI tool. Use this skill whenever Connor wants to create, view, update, complete, or delete tasks — including phrasing like "add a task," "what's on my plate," "mark that done," "remove that task," "show me what's due," or any request involving task tracking, to-do items, or his personal task list.
---

# Vikunja Task Management

Connor manages tasks via a self-hosted Vikunja instance at tasks.connorrhodes.com, accessed through the `vik` CLI tool. Always use `vik` for task operations — never navigate to the web UI or use the API directly.

## Quick Reference

| Goal | Command |
|------|---------|
| See today's tasks | `vik task today` |
| See upcoming tasks | `vik task upcoming [--days N]` |
| See all tasks | `vik task list` |
| Find a task | `vik task get <ID or partial title>` |
| Search tasks | `vik task search <query>` |
| Create a task | `vik task create "Title" [options]` |
| Update a task | `vik task update <ID> [options]` |
| Mark done | `vik task update <ID> --done` |
| Delete a task | `vik task delete <ID>` |

---

## Creating Tasks

```bash
vik task create "Task title"
```

**Options:**
- `--project ID` — project to add to (default: 1)
- `--label LABEL` — assign a label (creates it if it doesn't exist)
- `--desc TEXT` — task description (overrides clipboard)
- `--no-clip` — skip auto-populating description from clipboard URL

**Date syntax in the title** (parsed automatically, removed from final title):
- `s+N` — start date N days from now
- `d+N` — due date N days from now

Examples:
```bash
vik task create "Review draft proposal"
vik task create "Follow up with vendor d+3"
vik task create "Prep for demo s+1 d+4" --label work
vik task create "Read article" --no-clip
```

> Note: if there's a URL in the clipboard, `vik` will automatically embed it as a markdown link in the description unless `--no-clip` is passed.

---

## Reading Tasks

```bash
vik task today              # tasks with start or due date today
vik task today --due-only   # only tasks due today (ignores start date)

vik task upcoming           # next 7 days
vik task upcoming --days 14 # next 14 days
vik task upcoming --due-only

vik task list               # all tasks

vik task get 42             # fetch task by ID
vik task get "vendor"       # search by title substring (returns matches)

vik task search "follow up" # full-text search across all fields
```

When Connor asks "what do I have today" or "what's coming up," run `vik task today` or `vik task upcoming` and present the output.

---

## Updating Tasks

```bash
vik task update <ID> --title "New title"
vik task update <ID> --desc "Updated description"
vik task update <ID> --done
vik task update <ID> --undone
```

At least one field is required. `--done` and `--undone` are mutually exclusive.

If Connor says something like "mark that done" or "complete task 7," use `vik task update <ID> --done`.

---

## Deleting Tasks

```bash
vik task delete <ID>
```

No confirmation prompt — deletion is immediate. Confirm with Connor before deleting unless he was explicit about it.

---

## Labels

```bash
vik label list
vik label create "urgent" --color ff0000
```

Labels are created automatically when referenced in `vik task create --label`, so you rarely need to create them manually.

---

## Workflow Tips

- If Connor gives a title but no ID, use `vik task get "title"` to find the task first, then act on the result.
- Task IDs are integers shown in list/today/upcoming output.
- When creating a task with a URL context (e.g., "add this link as a task"), let clipboard auto-populate work — don't use `--no-clip`.
- For tasks with relative deadlines ("due Friday," "starts tomorrow"), convert to `d+N` / `s+N` before passing to the CLI.
