Feishu document read/write operations. Activate when user mentions Feishu docs, cloud docs, or docx links.
Install with Tessl CLI
npx tessl i github:qsimeon/openclaw-engaging --skill feishu-doc90
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
Single tool feishu_doc with action parameter for all document operations, including table creation for Docx.
From URL https://xxx.feishu.cn/docx/ABC123def → doc_token = ABC123def
{ "action": "read", "doc_token": "ABC123def" }Returns: title, plain text content, block statistics. Check hint field - if present, structured content (tables, images) exists that requires list_blocks.
{ "action": "write", "doc_token": "ABC123def", "content": "# Title\n\nMarkdown content..." }Replaces entire document with markdown content. Supports: headings, lists, code blocks, quotes, links, images ( auto-uploaded), bold/italic/strikethrough.
Limitation: Markdown tables are NOT supported.
{ "action": "append", "doc_token": "ABC123def", "content": "Additional content" }Appends markdown to end of document.
{ "action": "create", "title": "New Document", "owner_open_id": "ou_xxx" }With folder:
{
"action": "create",
"title": "New Document",
"folder_token": "fldcnXXX",
"owner_open_id": "ou_xxx"
}Important: Always pass owner_open_id with the requesting user's open_id (from inbound metadata sender_id) so the user automatically gets full_access permission on the created document. Without this, only the bot app has access.
{ "action": "list_blocks", "doc_token": "ABC123def" }Returns full block data including tables, images. Use this to read structured content.
{ "action": "get_block", "doc_token": "ABC123def", "block_id": "doxcnXXX" }{
"action": "update_block",
"doc_token": "ABC123def",
"block_id": "doxcnXXX",
"content": "New text"
}{ "action": "delete_block", "doc_token": "ABC123def", "block_id": "doxcnXXX" }{
"action": "create_table",
"doc_token": "ABC123def",
"row_size": 2,
"column_size": 2,
"column_width": [200, 200]
}Optional: parent_block_id to insert under a specific block.
{
"action": "write_table_cells",
"doc_token": "ABC123def",
"table_block_id": "doxcnTABLE",
"values": [
["A1", "B1"],
["A2", "B2"]
]
}{
"action": "create_table_with_values",
"doc_token": "ABC123def",
"row_size": 2,
"column_size": 2,
"column_width": [200, 200],
"values": [
["A1", "B1"],
["A2", "B2"]
]
}Optional: parent_block_id to insert under a specific block.
{
"action": "upload_image",
"doc_token": "ABC123def",
"url": "https://example.com/image.png"
}Or local path with position control:
{
"action": "upload_image",
"doc_token": "ABC123def",
"file_path": "/tmp/image.png",
"parent_block_id": "doxcnParent",
"index": 5
}Optional index (0-based) inserts the image at a specific position among sibling blocks. Omit to append at end.
Note: Image display size is determined by the uploaded image's pixel dimensions. For small images (e.g. 480x270 GIFs), scale to 800px+ width before uploading to ensure proper display.
{
"action": "upload_file",
"doc_token": "ABC123def",
"url": "https://example.com/report.pdf"
}Or local path:
{
"action": "upload_file",
"doc_token": "ABC123def",
"file_path": "/tmp/report.pdf",
"filename": "Q1-report.pdf"
}Rules:
url / file_pathfilename overrideparent_block_idaction: "read" - get plain text + statisticsblock_types in response for Table, Image, Code, etc.action: "list_blocks" for full datachannels:
feishu:
tools:
doc: true # default: trueNote: feishu_wiki depends on this tool - wiki page content is read/written via feishu_doc.
Required: docx:document, docx:document:readonly, docx:document.block:convert, drive:drive
cc4d1f7
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.