Manage Vikunja projects and tasks (overdue/due/today), mark done, and get quick summaries via the Vikunja API.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add Demerzels-lab/elsamultiskillagent --skill vikunja-fast --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Vikunja Fast?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/demerzels-lab-vikunja-fast)More formats (shields.io, HTML) on the badges page.
---
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
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!