weixin-file-send

Sends local files and images to the chat via a structured protocol block.

Updated Jul 10, 2026
One-click install
npx skills add https://github.com/Grong/openhub-client --skill weixin-file-send-grong
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: weixin-file-send
Source: https://github.com/Grong/openhub-client/tree/main/crates/backend/openhub-app/assets/builtin-skills/weixin-file-send
Command: npx skills add https://github.com/Grong/openhub-client --skill weixin-file-send-grong

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? When an AI assistant generates or locates a local file, users often want that file delivered directly into the chat instead of just reading a text description. This Skill defines the exact protocol block the assistant must emit so the OpenHub app actually sends the file or image back to the user. ## Core Features & Use Cases - File Delivery Protocol: Emits an [OPENHUB_CHANNEL_SEND] block with a JSON payload specifying type, path, optional fileName, and caption. - Image and File Support: Handles both image and generic file types, with relative paths for workspace files. - Use Case: After generating a sales chart at ./output/chart.png, the assistant appends the protocol block so the chart image is delivered directly into the current Weixin-style chat conversation. ## Quick Start Ask the assistant to send you the generated report file, and it will append the channel-send protocol block so the app delivers the file to your chat.

Frequently Asked Questions about weixin-file-send

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I send a file back to the user in chat?

Append an [OPENHUB_CHANNEL_SEND] block at the end of the reply containing a JSON payload with type set to file or image and the path to the existing local file. The app parses this block and delivers the file to the conversation.

What file types can be sent with the channel send protocol?

The protocol supports two types: image and file. Use image for pictures like charts and file for documents such as PDFs, with an optional fileName and caption field.

Why is the file not being sent even though I mentioned it in the reply?

The app only sends a file when the exact protocol block is emitted. Describing the file in plain text without the [OPENHUB_CHANNEL_SEND] block does nothing, and the JSON must not be wrapped in Markdown code fences.

Can I send a file that does not exist yet?

No. The path must point to a real local file that already exists before the reply is sent. Emitting the protocol block for a nonexistent file is explicitly disallowed and will fail.

Should I use absolute or relative paths for files?

Use relative paths when the file is inside the workspace, such as ./output/report.pdf. The key requirement is that the path resolves to a real existing local file.