home / skills / openclaw / skills / vikunja-fast

vikunja-fast skill

/skills/tmigone/vikunja-fast

This skill lets you manage Vikunja tasks across projects, view overdue and due items, and mark tasks done via a simple CLI.

npx playbooks add skill openclaw/skills --skill vikunja-fast

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
2.9 KB
---
name: vikunja-fast
description: Manage Vikunja projects and tasks (overdue/due/today), mark done, and get quick summaries via the Vikunja API.
homepage: https://vikunja.io/
metadata: {"clawdbot":{"emoji":"📋","requires":{"bins":["curl","jq"],"env":["VIKUNJA_URL"],"optionalEnv":["VIKUNJA_TOKEN","VIKUNJA_USERNAME","VIKUNJA_PASSWORD"]},"primaryEnv":"VIKUNJA_TOKEN"}}
---

# ✅ Vikunja Fast Skill

Use Vikunja as the source of truth for tasks and completions, and interact with it from Clawdbot.

## Setup

You can provide credentials either via environment variables **or** via Clawdbot’s skills config.

### Option A: Environment variables

Set these environment variables **in the same environment where the gateway runs**:

```bash
export VIKUNJA_URL="https://vikunja.xyz"

# Recommended: use a JWT (starts with "eyJ")
export VIKUNJA_TOKEN="<jwt>"

# Alternative: login with username/password (the helper CLI will request a JWT)
export VIKUNJA_USERNAME="<username>"
export VIKUNJA_PASSWORD="<password>"
```

### Option B: Clawdbot skills config (recommended for the agent)

Edit `~/.clawdbot/clawdbot.json`:

```json5
{
  skills: {
    entries: {
      "vikunja-fast": {
        enabled: true,
        env: {
          VIKUNJA_URL: "https://vikunja.xyz",
          VIKUNJA_TOKEN: "<jwt>"
        }
      }
    }
  }
}
```

Notes:
- `VIKUNJA_URL` can be the base URL; the helper normalizes to `/api/v1`.
- Vikunja auth expects a JWT bearer token for most API calls (`Authorization: Bearer <jwt>`).
- If you only have a non-JWT token (often starts with `tk_...`), use `/login` to obtain a JWT.

## Quick checks

### Login (get a JWT)
```bash
curl -fsS -X POST "$VIKUNJA_URL/login" \
  -H "Content-Type: application/json" \
  -d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD","long_token":true}' | jq
```

### Who am I? (requires JWT)
```bash
curl -fsS "$VIKUNJA_URL/user" \
  -H "Authorization: Bearer $VIKUNJA_TOKEN" | jq
```

### List projects
```bash
curl -fsS "$VIKUNJA_URL/projects" \
  -H "Authorization: Bearer $VIKUNJA_TOKEN" | jq '.[] | {id, title}'
```

## Commands

This skill ships with a tiny helper CLI:

- `{baseDir}/vikunja.sh`

Examples:

```bash
# Overdue across all projects
{baseDir}/vikunja.sh overdue

# Due today
{baseDir}/vikunja.sh due-today

# Arbitrary filter (Vikunja filter syntax)
{baseDir}/vikunja.sh list --filter 'done = false && due_date < now'

# Show / complete a task
{baseDir}/vikunja.sh show 123
{baseDir}/vikunja.sh done 123
```

Notes:
- Output formatting:
  - Each task should be formated as: `<EMOJI> <DUE_DATE> - #<ID> <TASK>`
  - Emoji comes from the project title when it starts with one; otherwise uses `🔨`
  - Due dates are rendered as `Mon/D` (time + year removed)
- This skill uses `GET /tasks/all` to fetch tasks across all projects

## Mark task done

```bash
TASK_ID=123

curl -fsS -X POST "$VIKUNJA_URL/tasks/$TASK_ID" \
  -H "Authorization: Bearer $VIKUNJA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"done": true}' | jq
```

Overview

This skill lets you manage Vikunja projects and tasks quickly from an agent or CLI. It fetches tasks across projects, surfaces overdue/due-today items, marks tasks done, and provides compact summaries. The tool uses the Vikunja API and supports JWT-based authentication or username/password login to obtain a JWT.

How this skill works

The skill calls Vikunja endpoints (notably GET /tasks/all, /projects, /user and POST /tasks/:id) to list and update tasks. It formats tasks as an emoji, simplified due date, task ID and title for fast scanning, and infers project emoji when the project title begins with one. Authentication is handled via environment variables or a skills config; a long-lived JWT bearer token is recommended for API calls.

When to use it

  • Check overdue tasks across all projects quickly from an agent or script.
  • Get a concise list of tasks due today to plan your work.
  • Mark a task complete without opening the Vikunja web UI.
  • Generate short summaries for daily standups or notifications.
  • Run custom Vikunja filters to locate specific task sets.

Best practices

  • Provide a JWT (starts with eyJ) in VIKUNJA_TOKEN for reliable API access.
  • Store credentials in the agent skills config for repeatable automation.
  • Use the helper CLI for human-friendly output and quick commands.
  • Name projects with an emoji prefix when you want project-specific icons.
  • Prefer GET /tasks/all filters for cross-project queries to avoid paging issues.

Example use cases

  • Run vikunja.sh overdue each morning to triage overdue items before standup.
  • Use vikunja.sh due-today to populate a daily agenda sent to a team channel.
  • Mark a task done from a chat-based agent after confirming completion.
  • Run a custom filter to list all unassigned high-priority tasks across projects.
  • Automate a nightly backup that lists completed tasks for the day.

FAQ

How do I authenticate?

Set VIKUNJA_TOKEN with a JWT or provide VIKUNJA_USERNAME and VIKUNJA_PASSWORD and obtain a JWT via /login.

What output format does the helper use?

Each task prints as: <EMOJI> <Mon/D> - #<ID> <TASK>, using project emoji when available and a default icon otherwise.