feishu-task

Original🇨🇳 Chinese
Translated

Feishu Task Management Tool, used for creating, querying, updating tasks and tasklists. **Use this Skill when**: (1) Need to create, query, update, or delete tasks (2) Need to create and manage tasklists (3) Need to view task lists or tasks within tasklists (4) User mentions "task", "to-do", "tasklist", "pending task" (5) Need to set task assignees, followers, and due dates

9installs
Added on

NPX Install

npx skill4agent add larksuite/openclaw-lark feishu-task

SKILL.md Content (Chinese)

View Translation Comparison →

Feishu Task Management

🚨 Pre-Execution Notes

  • Time Format: ISO 8601 / RFC 3339 (with time zone), e.g.,
    2026-02-28T17:00:00+08:00
  • current_user_id Highly Recommended: Obtain from SenderId in message context. The tool will automatically add it as a follower (if not in members) to ensure the creator can edit the task
  • patch/get Required: task_guid
  • tasklist.tasks Required: tasklist_guid
  • Complete Task: completed_at = "2026-02-26 15:00:00"
  • Revert Completion (Restore to Incomplete): completed_at = "0"

📋 Quick Index: Intent → Tool → Required Parameters

User IntentToolactionRequired ParametersHighly RecommendedCommon Optional
Create To-Dofeishu_task_taskcreatesummarycurrent_user_id (SenderId)members, due, description
Query Incomplete Tasksfeishu_task_tasklist-completed=falsepage_size
Get Task Detailsfeishu_task_taskgettask_guid--
Complete Taskfeishu_task_taskpatchtask_guid, completed_at--
Revert Task Completionfeishu_task_taskpatchtask_guid, completed_at="0"--
Modify Due Datefeishu_task_taskpatchtask_guid, due--
Create Tasklistfeishu_task_tasklistcreatename-members
View Tasks in Tasklistfeishu_task_tasklisttaskstasklist_guid-completed
Add Tasklist Membersfeishu_task_tasklistadd_memberstasklist_guid, members[]--

🎯 Core Constraints (Knowledge Not Disclosed in Schema)

1. Tool Uses User Identity (Built-in Protection)

The tool uses
user_access_token
(user identity)
This means:
  • ✅ You can assign any member when creating a task (including assigning to others only)
  • ⚠️ You can only view and edit tasks where you are a member
  • ⚠️ If you don't add yourself to members when creating, you won't be able to edit the task later
Automatic Protection Mechanism:
  • Pass the
    current_user_id
    parameter (obtained from SenderId)
  • If
    current_user_id
    is not in
    members
    , the tool will automatically add it as a follower
  • Ensures the creator can always edit the task
Recommended Usage: Always pass
current_user_id
when creating tasks, the tool will handle member relationships automatically.

2. Task Member Role Explanation

  • assignee: Responsible for completing the task, can edit the task
  • follower: Follows task progress, receives notifications
Example of Adding Members:
json
{
  "members": [
    {"id": "ou_xxx", "role": "assignee"},  // Assignee
    {"id": "ou_yyy", "role": "follower"}   // Follower
  ]
}
Note: Use the user's
open_id
for
id
(obtained from SenderId in message context)

3. Tasklist Member Role Conflict

Phenomenon: When creating a tasklist (
tasklist.create
) with
members
, the returned
tasklist.members
is empty or missing members
Reason: The creator automatically becomes the tasklist owner. If the creator is included in
members
, the user will finally be set as owner and removed from
members
(a user can only have one role)
Suggestion: Do not include the creator in
members
, only add other collaborative members

4. Three Uses of completed_at

1) Complete Task (Set Completion Time):
json
{
  "action": "patch",
  "task_guid": "xxx",
  "completed_at": "2026-02-26 15:30:00"  // Beijing time string
}
2) Revert Completion (Restore to Incomplete State):
json
{
  "action": "patch",
  "task_guid": "xxx",
  "completed_at": "0"  // Special value "0" means revert completion
}
3) Millisecond Timestamp (Not recommended unless strictly generated by upper layer):
json
{
  "completed_at": "1740545400000"  // Millisecond timestamp string
}

5. Tasklist Member Roles

Member TypeRoleDescription
userownerOwner, can transfer ownership
usereditorCan edit, modify tasklist and tasks
userviewerCan view, read-only permission
chateditor/viewerThe entire group gets the permission
Note: When creating a tasklist, the creator automatically becomes the owner, no need to specify in members.

📌 Usage Scenario Examples

Scenario 1: Create Task and Assign Assignee

json
{
  "action": "create",
  "summary": "Prepare Weekly Meeting Materials",
  "description": "Organize this week's work progress and next week's plan",
  "current_user_id": "ou_sender's_open_id",
  "due": {
    "timestamp": "2026-02-28 17:00:00",
    "is_all_day": false
  },
  "members": [
    {"id": "ou_collaborator's_open_id", "role": "assignee"}
  ]
}
Explanation:
  • summary
    is a required field
  • current_user_id
    is highly recommended to pass (obtained from SenderId), the tool will automatically add it as a follower
  • members
    can only include other collaborators, the current user will be added automatically
  • Use Beijing time string format

Scenario 2: Query Incomplete Tasks I'm Responsible For

json
{
  "action": "list",
  "completed": false,
  "page_size": 20
}

Scenario 3: Complete Task

json
{
  "action": "patch",
  "task_guid": "task_guid",
  "completed_at": "2026-02-26 15:30:00"
}

Scenario 4: Revert Task Completion (Restore to Incomplete State)

json
{
  "action": "patch",
  "task_guid": "task_guid",
  "completed_at": "0"
}

Scenario 5: Create Tasklist and Add Collaborators

json
{
  "action": "create",
  "name": "Product Iteration v2.0",
  "members": [
    {"id": "ou_xxx", "role": "editor"},
    {"id": "ou_yyy", "role": "viewer"}
  ]
}

Scenario 6: View Incomplete Tasks in Tasklist

json
{
  "action": "tasks",
  "tasklist_guid": "tasklist_guid",
  "completed": false
}

Scenario 7: All-Day Task

json
{
  "action": "create",
  "summary": "Annual Summary",
  "due": {
    "timestamp": "2026-03-01 00:00:00",
    "is_all_day": true
  }
}

🔍 Common Errors and Troubleshooting

Error PhenomenonRoot CauseSolution
Cannot edit task after creationDid not add yourself to members when creatingAt least add the current user (SenderId) as assignee or follower when creating
patch fails with task_guid missing promptDid not pass task_guid parameterMust pass task_guid for patch/get
tasks fails with tasklist_guid missing promptDid not pass tasklist_guid parameterMust pass tasklist_guid for tasklist.tasks action
Revert completion failsIncorrect completed_at formatUse the string
"0"
, not the number 0
Incorrect timeUsed Unix timestampUse ISO 8601 format (with time zone):
2024-01-01T00:00:00+08:00

📚 Appendix: Background Knowledge

A. Resource Relationships

Tasklist
  └─ Custom Section (Optional)
      └─ Task
          ├─ Members: assignee, follower
          ├─ Subtask
          ├─ Due Date, Start Time
          └─ Attachments, Comments
Core Concepts:
  • Task: Independent to-do item with a unique
    task_guid
  • Tasklist: Container for organizing multiple tasks with a unique
    tasklist_guid
  • assignee: Can edit tasks and mark them as completed
  • follower: Receives task update notifications
  • MyTasks: Collection of all tasks where you are the assignee

B. How to Get GUID

  • task_guid: Obtain from
    task.guid
    in the return value after creating a task, or via
    list
    query
  • tasklist_guid: Obtain from
    tasklist.guid
    in the return value after creating a tasklist, or via
    list
    query

C. How to Add Task to Tasklist

Specify the
tasklists
parameter when creating a task:
json
{
  "action": "create",
  "summary": "Task Title",
  "tasklists": [
    {
      "tasklist_guid": "tasklist_guid",
      "section_guid": "section_guid (optional)"
    }
  ]
}

D. How to Create Recurring Tasks

Use the
repeat_rule
parameter in RRULE format:
json
{
  "action": "create",
  "summary": "Weekly Meeting",
  "due": {"timestamp": "2026-03-03 14:00:00", "is_all_day": false},
  "repeat_rule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO"
}
Note: Only tasks with a due date can set a repeat rule.

E. Data Permissions

  • Can only operate tasks you have permission for (tasks where you are a member)
  • Can only operate tasklists you have permission for (tasklists where you are a member)
  • Adding a task to a tasklist requires edit permissions for both the task and the tasklist