feishu-task

Installation
SKILL.md

Feishu Tasks

把对话中的承诺固化为可追踪状态。聊天里说的"下周搞一下"很容易被淹没,但变成一条有 deadline 的任务就不会。加上心跳监控,形成闭环。

触发场景(不只是用户显式说"建个任务"):

  1. 隐式承诺 — 用户说"记得提醒我..."、"别忘了..."、"下周之前要..."
  2. 讨论后的 action items — 文档/方案讨论结束后,结论中的待办事项
  3. Bot 发现的待跟进项 — 审查代码发现 TODO、定时任务失败需要处理
  4. 异步交接 — "帮我查一下X,周五前给我" → 给自己建任务,到期交付

与日历的边界:日历回答"什么时候和谁在哪",任务回答"什么事要做完"。重叠时:如"周三 14:00 面试候选人"建日历,准备工作("面试前看简历")建任务。

Tool

python3 .claude/skills/feishu-task/scripts/task_ctl.py <command> [args]

Commands

# Create a task
task_ctl.py create "提交周报" --due "tomorrow 17:00" --assignee "张三" --desc "Q1 summary"
task_ctl.py create "Review PR" --due "+2h"
task_ctl.py create "团队周会准备"

# List open tasks
task_ctl.py list
task_ctl.py list --assignee "张三"
task_ctl.py list --completed

# Get task details
task_ctl.py get <task_guid>

# Update a task
task_ctl.py update <task_guid> --title "New title"
task_ctl.py update <task_guid> --due "2026-03-10 18:00" --desc "Updated description"

# Mark task as done
task_ctl.py complete <task_guid>

# Assign / unassign members
task_ctl.py assign <task_guid> "张三,李四"
task_ctl.py unassign <task_guid> "张三"

# Delete a task
task_ctl.py delete <task_guid>

# Section (group) management
task_ctl.py section create "紧急"
task_ctl.py section list
task_ctl.py section delete <section_guid>

# Create task in a specific section
task_ctl.py create "紧急修复" --section "紧急" --due "+2h"

# Tasklist management
task_ctl.py tasklist create "My List"
task_ctl.py tasklist list
task_ctl.py tasklist add-member "张三,李四" --role editor
task_ctl.py tasklist remove-member "张三"

# Task snapshot (used by heartbeat)
task_ctl.py snapshot
task_ctl.py snapshot --window-hours 4

Time Formats

The --due parameter accepts flexible time formats:

  • ISO: 2026-03-10T15:00, 2026-03-10 15:00, 2026-03-10
  • Time only: 15:00 (today, or tomorrow if past)
  • Relative: +2h, +30m
  • Natural: tomorrow 15:00

Heartbeat Integration

The heartbeat uses a two-layer architecture driven entirely by the task snapshot:

  1. Triage (Sonnet): Reads snapshot, judges OK vs anomaly with quantified rules
  2. Action (Sonnet): Only triggered on anomaly — has full tool access to update tasks, create follow-ups, compose natural-tone DM notifications

Config:

heartbeat:
  triage:
    provider: claude-cli
    model: sonnet
  action:
    provider: claude-cli
    model: sonnet
  notify_open_id: ou_xxx  # DM target
  alert_window_hours: 2  # alert for tasks due within N hours

Snapshot output includes current time, assignee info, and open tasks without due dates:

[任务快照] 2026-03-04 15:30 Tuesday
逾期 (1):
- "提交周报" | 逾期 2h | 负责人: 张三
即将到期 (1):
- "Review PR" | 45min后到期 | 负责人: 未指派
进行中 (1):
- "调研竞品" | 负责人: 李四

Behavior Notes

  • All tasks created by the bot are automatically added to the configured tasklist.
  • list shows open tasks by default. Use --completed for done tasks.
  • --assignee resolves names via shared ContactStore (contacts added in feishu-cal or feishu-perm are available here too).
  • Task timestamps use milliseconds (Feishu Task v2 API format). Time parsing handles this automatically.
  • snapshot exits silently (no output) if no open tasks, keeping heartbeat noise-free.
  • The bot uses tenant_access_token, so the global task list API is unavailable. All queries go through the dedicated tasklist endpoint.
  • The tasklist is created by the bot (owner=app). Users must be added as members (tasklist add-member) to see tasks and sections in their Feishu client.
Weekly Installs
1
GitHub Stars
20
First Seen
Mar 25, 2026
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
warp1