← 返回 Skills 市场
axelhu

Vikunja Usage

作者 AxelHu · GitHub ↗ · v1.0.2 · MIT-0
cross-platform ⚠ pending
74
总下载
0
收藏
0
当前安装
3
版本数
在 OpenClaw 中安装
/install vikunja-usage
功能描述
任务管理工具:通过 Vikunja REST API v1 创建项目、任务、标签和评论,支持任务搜索、过滤、完成状态切换。Requires: curl。读取 $VIKUNJA_TOKEN 环境变量或 $AGENT_WORKSPACE/config/.vikunja-token 文件获取 token,支持多 agent。
使用说明 (SKILL.md)

Vikunja Task Manager

Vikunja 是一个轻量开源任务管理工具,部署于 http://localhost:3456,REST API v1。

凭证(多 Agent 支持)

Token 支持两种读取方式(按优先级):

  1. 环境变量 VIKUNJA_TOKEN(推荐,适合 agent 运行时注入)
  2. Token 文件 $AGENT_WORKSPACE/config/.vikunja-token(每个 agent 有自己独立的 token 文件)

获取 Token

RESP=$(curl -s -X POST http://localhost:3456/api/v1/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"your-user","password":"your-pass"}')
TOKEN=$(echo "$RESP" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
echo "$TOKEN"

存入 token 文件(每个 agent 不同路径):

mkdir -p "$AGENT_WORKSPACE/config"
echo "$TOKEN" > "$AGENT_WORKSPACE/config/.vikunja-token"
chmod 600 "$AGENT_WORKSPACE/config/.vikunja-token"

读取 Token

get_token() {
  [ -n "$VIKUNJA_TOKEN" ] && { echo "$VIKUNJA_TOKEN"; return; }
  [ -f "$AGENT_WORKSPACE/config/.vikunja-token" ] && cat "$AGENT_WORKSPACE/config/.vikunja-token"
}
TOKEN=$(get_token)

多 Agent 场景:每个 agent 独立 login,token 互不干扰。Vikunja 本身 token 无过期时间,可长期使用。

项目(Projects)

# 列出项目
curl -s http://localhost:3456/api/v1/projects -H "Authorization: Bearer $TOKEN"

# 创建项目(PUT /projects)
curl -s -X PUT http://localhost:3456/api/v1/projects \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"title":"项目名","description":""}'

# 获取项目
curl -s http://localhost:3456/api/v1/projects/{id} -H "Authorization: Bearer $TOKEN"

# 更新项目(POST)
curl -s -X POST http://localhost:3456/api/v1/projects/{id} \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"title":"新标题"}'

# 删除项目
curl -s -X DELETE http://localhost:3456/api/v1/projects/{id} -H "Authorization: Bearer $TOKEN"

任务(Tasks)

⚠️ 创建用 PUT /projects/{id}/tasks,更新用 POST /tasks/{id}

# 在项目里创建任务(PUT,不是 POST)
curl -s -X PUT http://localhost:3456/api/v1/projects/{project_id}/tasks \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"title":"任务标题","description":"描述","priority":2}'

# 更新任务(POST,不是 PUT)
curl -s -X POST http://localhost:3456/api/v1/tasks/{task_id} \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"done":true,"priority":3}'

# 列出所有任务
curl -s http://localhost:3456/api/v1/tasks -H "Authorization: Bearer $TOKEN"

# 搜索标题
curl -s "http://localhost:3456/api/v1/tasks?s=关键词" -H "Authorization: Bearer $TOKEN"

# 过滤(done=false 只显示未完成)
curl -s "http://localhost:3456/api/v1/tasks?filter=done%20%3D%20false" \
  -H "Authorization: Bearer $TOKEN"

# 列出某项目任务
curl -s http://localhost:3456/api/v1/projects/{project_id}/tasks \
  -H "Authorization: Bearer $TOKEN"

# 删除任务
curl -s -X DELETE http://localhost:3456/api/v1/tasks/{id} -H "Authorization: Bearer $TOKEN"

评论(Comments)

# 添加评论(字段名是 comment,不是 text)
curl -s -X PUT http://localhost:3456/api/v1/tasks/{task_id}/comments \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"comment":"评论内容"}'

# 获取评论
curl -s http://localhost:3456/api/v1/tasks/{task_id}/comments \
  -H "Authorization: Bearer $TOKEN"

标签(Labels)

# 创建标签
curl -s -X PUT http://localhost:3456/api/v1/labels \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"title":"in-progress","color":"#ff9900"}'

# 给任务打标签
curl -s -X PUT http://localhost:3456/api/v1/tasks/{task_id}/labels \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"labels": [{"id": 1}]}'

负责人(Assignees)

# 分配负责人
curl -s -X PUT http://localhost:3456/api/v1/tasks/{task_id}/assignees \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"user_id": 2}'

# 获取负责人
curl -s http://localhost:3456/api/v1/tasks/{task_id}/assignees \
  -H "Authorization: Bearer $TOKEN"

信息查询

# 服务信息(版本、功能开关)
curl -s http://localhost:3456/api/v1/info -H "Authorization: Bearer $TOKEN"

Python 模板

import requests, os

BASE = "http://localhost:3456/api/v1"
TOKEN_FILE = os.path.join(os.getenv("AGENT_WORKSPACE", "."), "config", ".vikunja-token")

def get_token():
    if os.getenv("VIKUNJA_TOKEN"):
        return os.getenv("VIKUNJA_TOKEN")
    with open(TOKEN_FILE) as f:
        return f.read().strip()

def headers():
    return {"Authorization": f"Bearer {get_token()}", "Content-Type": "application/json"}

def create_task(project_id, title, **kw):
    return requests.put(f"{BASE}/projects/{project_id}/tasks",
                        json={"title": title, **kw}, headers=headers()).json()

def update_task(task_id, **kw):
    return requests.post(f"{BASE}/tasks/{task_id}", json=kw, headers=headers()).json()

def search_tasks(q):
    return requests.get(f"{BASE}/tasks", params={"s": q}, headers=headers()).json()

已知坑

  1. 创建任务用 PUT /projects/{id}/tasks,不是 POST
  2. 更新任务用 POST /tasks/{id},不是 PUT(PUT 报 405)
  3. 评论字段是 comment,不是 text
  4. 批量创建 POST /tasks/bulk 文档有但实测不通,循环单条操作代替

Agent Rules

  • 先尝试从 VIKUNJA_TOKEN 环境变量读取 token;无则读 $AGENT_WORKSPACE/config/.vikunja-token
  • Token 不硬编码,运行时从磁盘或环境变量读取
  • 日志只含 metadata(操作类型、数量),无 token 值
  • Token 文件权限 600
  • Token 泄露后:重新 login 获取新 token 存入文件
能力标签
requires-oauth-tokenrequires-sensitive-credentials
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install vikunja-usage
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /vikunja-usage 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.2
- Updated description to clarify supported features in Chinese and mention multi-agent token support. - No functional or code logic changes; documentation only. - No API changes. Usage, security, and workflow are unchanged.
v1.0.1
- Token 文件路径从 `$AGENT_WORKSPACE/.vikunja-token` 改为 `$AGENT_WORKSPACE/config/.vikunja-token` - 所有相关的 Bash/Python 示例、文档说明同步为新 token 文件目录 - 无功能变更,仅路径与文档更新 - 继续支持 per-agent 独立 token 和多 agent 并发安全
v1.0.0
Initial release of Vikunja task manager skill. - Supports creating and managing projects, tasks, labels, comments, and assignees via Vikunja REST API v1 at localhost:3456 - Task lookup, search, filtering, and done-toggle supported - Reads per-agent token from VIKUNJA_TOKEN env or $AGENT_WORKSPACE/.vikunja-token (multi-agent safe) - Requires curl; Python usage examples included - Agent rules ensure no token hardcoding and secure token storage (permission 600)
元数据
Slug vikunja-usage
版本 1.0.2
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 3
常见问题

Vikunja Usage 是什么?

任务管理工具:通过 Vikunja REST API v1 创建项目、任务、标签和评论,支持任务搜索、过滤、完成状态切换。Requires: curl。读取 $VIKUNJA_TOKEN 环境变量或 $AGENT_WORKSPACE/config/.vikunja-token 文件获取 token,支持多 agent。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 74 次。

如何安装 Vikunja Usage?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install vikunja-usage」即可一键安装,无需额外配置。

Vikunja Usage 是免费的吗?

是的,Vikunja Usage 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Vikunja Usage 支持哪些平台?

Vikunja Usage 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Vikunja Usage?

由 AxelHu(@axelhu)开发并维护,当前版本 v1.0.2。

💬 留言讨论