名称: asana
描述: "通过 Asana REST API 将 Asana 与 Clawdbot 集成。当你需要列出/搜索/创建/更新 Asana 任务/项目/工作区,或为个人本地集成(OOB/手动粘贴授权码)设置 Asana OAuth(授权码模式)时使用。"
此技能专为仅限个人本地使用的 Asana 集成设计,采用 OAuth 流程,支持带外/手动粘贴授权码方式。
/users/me、/workspaces、任务操作)在 Asana 开发者控制台(My apps)中:
- 创建应用
- 启用所需权限范围(典型范围:tasks:read、tasks:write、projects:read)
- 将重定向 URI 设置为带外值(手动授权码):
- urn:ietf:wg:oauth:2.0:oob
选项 A(推荐用于 Clawdbot): 保存到本地凭证文件:
node scripts/configure.mjs --client-id "..." --client-secret "..."
此命令将写入 ~/.clawdbot/asana/credentials.json。
选项 B: 设置环境变量(shell/会话级):
- ASANA_CLIENT_ID
- ASANA_CLIENT_SECRET
在仓库根目录执行:
1) 打印授权 URL:
node scripts/oauth_oob.mjs authorize
2) 打开打印的 URL,点击 Allow,复制授权码。
3) 交换授权码并本地保存令牌:
node scripts/oauth_oob.mjs token --code "在此粘贴授权码"
令牌存储位置:
- ~/.clawdbot/asana/token.json
可使用以下任一方式:
- 显式命令:消息以 /asana ... 开头
- 自然语言:例如“列出分配给我的任务”
对于 Clawdbot,需通过将用户请求映射到相应的 asana_api.mjs 命令来实现。
示例:
- /asana tasks-assigned → tasks-assigned --assignee me
- “列出分配给我的任务” → tasks-assigned --assignee me
- “列出 <项目> 中的所有任务” → 将 <项目> 解析为项目 gid,然后执行 tasks-in-project --project <gid>
- “列出 2026-01-01 至 2026-01-15 到期的任务” → search-tasks --assignee me --due_on.after 2026-01-01 --due_on.before 2026-01-15
(可选辅助)scripts/asana_chat.mjs 可将常见短语映射到命令框架。
基础检查(当前用户信息):
node scripts/asana_api.mjs me
列出工作区:
node scripts/asana_api.mjs workspaces
设置默认工作区(可选):
node scripts/asana_api.mjs set-default-workspace --workspace <workspace_gid>
设置后,支持该参数的命令可省略 --workspace。
列出指定工作区中的项目(显式指定):
node scripts/asana_api.mjs projects --workspace <workspace_gid>
使用默认工作区列出项目:
node scripts/asana_api.mjs projects
列出项目中的任务:
node scripts/asana_api.mjs tasks-in-project --project <project_gid>
列出分配给我的任务(Asana 要求指定工作区):
node scripts/asana_api.mjs tasks-assigned --workspace <workspace_gid> --assignee me
或使用默认工作区:
node scripts/asana_api.mjs tasks-assigned --assignee me
搜索任务(高级搜索):
node scripts/asana_api.mjs search-tasks --workspace <workspace_gid> --text "release" --assignee me
# 也支持便捷参数:--project <project_gid>
查看任务详情:
node scripts/asana_api.mjs task <task_gid>
标记任务为完成:
node scripts/asana_api.mjs complete-task <task_gid>
更新任务:
node scripts/asana_api.mjs update-task <task_gid> --name "新标题" --due_on 2026-02-01
为任务添加评论:
node scripts/asana_api.mjs comment <task_gid> --text "更新:已发货"
创建任务:
node scripts/asana_api.mjs create-task --workspace <workspace_gid> --name "测试任务" --notes "来自 clawdbot" --projects <project_gid>