CRITICAL — Before starting, you MUST first use the Read tool to read lark-shared/SKILL.md, which contains authentication, permission handling, and security rules.
Applicable Scenarios
- "Look at everyone's workload on the team" / "Who is relatively free and can take on new tasks"
- "Team workload balancing" / "Workload analysis"
- "Who is busiest right now" / "Task allocation suggestions"
- "Team Workload report" / "Manpower allocation situation"
- "Who should this task be assigned to" / "Team workload balancer"
Complementary to the existing task-prioritizer(personal perspective: how to schedule my tasks), this Skill is aimed at theteam manager perspective: see clearly each person's workload and reasonably allocate new tasks.
Prerequisites
Supports user identity. Before execution, ensure authorization:
lark-cli auth login --domain task,calendar,contact
Note: Viewing others' tasks and schedules requires the corresponding permissions. If a member's data cannot be obtained, it will be marked as "data unavailable".
Workflow
团队成员列表 ──► contact +search(逐个确认 user_id)
│
┌────────────┼────────────┐
▼ ▼ ▼
task(各成员 calendar approval
待办数量) (日程密度) (审批量,可选)
│ │ │
└────────────┼────────────┘
▼
AI 综合评估
│
┌──────────┼──────────┐
▼ ▼ ▼
负载热力图 任务分配建议 风险预警
Step 1: Determine the team member list
Method A — User specifies the member list:
The user says "look at the workload of Zhang San, Li Si, and Wang Wu", search and confirm one by one:
lark-cli contact +search --query "<姓名>" --format json
Method B — Obtain by department:
# 获取部门成员列表
lark-cli contact users find_by_department --params '{"department_id":"<dept_id>"}' --format json
Note: Obtaining department members requires administrative permissions. If there are no permissions, prompt the user to manually list the team members.
Step 2: Obtain each member's task volume
Refer to lark-task/SKILL.md。
Method A — Search tasks by assignee (recommended, v1.0.11+):
# 按负责人搜索未完成任务(逐人查询)
lark-cli task +search --assignee "<user_open_id>" --completed=false --format json
# 搜索本周到期的任务
lark-cli task +search --assignee "<user_open_id>" --completed=false --due "-0d,+7d" --format json
Tip: The newly added
+searchin v1.0.11 supports the--assigneeparameter to query by assignee, breaking through the limitation that+get-my-taskscan only query one's own tasks. Requires each member'sopen_id(obtained through Step 1'scontact +search).
Method B — Query only the current user's tasks (fallback solution):
# 获取当前登录用户的未完成任务
lark-cli task +get-my-tasks --format json
⚠️ Permission restriction: If
+search --assigneedoes not have permission to query others' tasks, degrade to the user manually entering each member's task data, or mark the results as "data restricted".
Extract from the task data:
- Number of incomplete tasks
- Number of tasks due this week
- Number of overdue tasks
- Total estimated work hours of tasks (if there is a work hours field)
Step 3: Obtain each member's schedule density
Refer to lark-calendar/SKILL.md。
# 查询忙闲状态(freebusy,推荐方式)
lark-cli calendar freebusy list --data '{
"time_min": "<本周一>",
"time_max": "<本周日>",
"user_ids": ["<user_id_1>", "<user_id_2>", "<user_id_3>"]
}' --format json
or query schedules person by person:
lark-cli calendar +agenda --start "<start>" --end "<end>"
Calculate from the busy/free data:
- Total meeting duration this week
- Proportion of meetings in working time
- Total amount of free time slots
Step 4: AI comprehensive evaluation
Load scoring model:
负载分 = 任务权重 × 任务分 + 会议权重 × 会议分
任务分 = (未完成任务数 × 1 + 本周到期 × 2 + 已过期 × 3) / 基准值
会议分 = 会议时间占工作时间比例 / 30%
基准值 = 团队平均任务数 × 1.2
Load levels:
| Level | Score range | Display | Description |
|---|---|---|---|
| Low | 0 - 0.5 | 🟢 | Has more free time, can take on new tasks |
| Moderate | 0.5 - 0.8 | 🟡 | Normal load |
| High | 0.8 - 1.2 | 🟠 | Approaching full load |
| Overload | > 1.2 | 🔴 | Overloaded, needs relief |
Step 5: Generate report
## 👥 团队负载报告({日期})
### 负载热力图
| 成员 | 待办 | 本周到期 | 已过期 | 会议占比 | 负载 |
|------|------|---------|--------|---------|------|
| 张三 | 12 | 5 | 2 | 45% | 🔴 过载 |
| 李四 | 8 | 3 | 0 | 30% | 🟡 适中 |
| 王五 | 4 | 1 | 0 | 20% | 🟢 低 |
| 小赵 | 9 | 4 | 1 | 55% | 🔴 过载 |
| 小钱 | 5 | 2 | 0 | 15% | 🟢 低 |
### 📊 负荷分布
Zhang San ████████████████░░░░ 80% 🔴 Xiao Zhao ██████████████████░░ 90% 🔴 Li Si ████████████░░░░░░░░ 60% 🟡 Xiao Qian ████████░░░░░░░░░░░░ 40% 🟢 Wang Wu ██████░░░░░░░░░░░░░░ 30% 🟢
### ⚠️ 风险预警
- 🔴 **张三** 有 2 项已过期任务,且本周会议占比 45%,建议减轻负担
- 🔴 **小赵** 会议占比 55%,几乎无法专注处理任务
- 🟡 团队平均负载 {X}%,整体偏{高/正常/低}
### 💡 任务分配建议
如果有新任务需要分配:
1. **优先考虑**:🟢 王五(负载最低,空闲时间充足)
2. **次选**:🟢 小钱(负载较低,本周日程稀疏)
3. **避免分配给**:🔴 张三、小赵(已过载)
### 📋 建议行动
1. 与张三沟通,协助处理 2 项过期任务或延期
2. 尝试减少小赵的会议(建议取消非必要参加的会议)
3. 将张三的 {任务X} 转移给王五
Fault tolerance mechanism
| Exception scenario | Handling method |
|---|---|
| Unable to query others' tasks | Ask the user to manually enter each member's task count, or analyze based only on the calendar |
| freebusy has no permission | Degrade to task-dimension-only analysis |
| Department query has no permission | Ask the user to manually list the team member roster |
| A member's data is unavailable | Mark as "data unavailable", analyze the remaining members normally |
Permission table
| Step | Command | Required scope | Required |
|---|---|---|---|
| Search users | contact +search |
contact:user.base:readonly |
✅ Required |
| Department members | contact users find_by_department |
contact:user.employee:readonly |
Optional |
| Search tasks | task +search |
task:task:read |
Recommended (v1.0.11+) |
| My tasks | task +get-my-tasks |
task:task:read |
Alternative |
| Busy/free query | calendar freebusy list |
calendar:calendar.freebusy:read |
Recommended |
| Calendar query | calendar +agenda |
calendar:calendar.event:read |
Alternative |
Reference
- lark-shared — Authentication, permissions (required reading)
- lark-task —
+get-my-tasksDetailed usage - lark-calendar — freebusy、
+agendaDetailed usage - lark-contact —
+searchDetailed usage