Initial commit: OpenClaw Skill Collection

6 custom skills (assign-task, dispatch-webhook, daily-briefing,
task-capture, qmd-brain, tts-voice) with technical documentation.
Compatible with Claude Code, OpenClaw, Codex CLI, and OpenCode.
This commit is contained in:
2026-03-13 10:58:30 +08:00
commit 4c966a3ad2
884 changed files with 140761 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
{
"title": "LINE (plugin)",
"content": "LINE connects to OpenClaw via the LINE Messaging API. The plugin runs as a webhook\nreceiver on the gateway and uses your channel access token + channel secret for\nauthentication.\n\nStatus: supported via plugin. Direct messages, group chats, media, locations, Flex\nmessages, template messages, and quick replies are supported. Reactions and threads\nare not supported.\n\nInstall the LINE plugin:\n\nLocal checkout (when running from a git repo):\n\n1. Create a LINE Developers account and open the Console:\n [https://developers.line.biz/console/](https://developers.line.biz/console/)\n2. Create (or pick) a Provider and add a **Messaging API** channel.\n3. Copy the **Channel access token** and **Channel secret** from the channel settings.\n4. Enable **Use webhook** in the Messaging API settings.\n5. Set the webhook URL to your gateway endpoint (HTTPS required):\n\nThe gateway responds to LINEs webhook verification (GET) and inbound events (POST).\nIf you need a custom path, set `channels.line.webhookPath` or\n`channels.line.accounts.<id>.webhookPath` and update the URL accordingly.\n\nEnv vars (default account only):\n\n* `LINE_CHANNEL_ACCESS_TOKEN`\n* `LINE_CHANNEL_SECRET`\n\nDirect messages default to pairing. Unknown senders get a pairing code and their\nmessages are ignored until approved.\n\nAllowlists and policies:\n\n* `channels.line.dmPolicy`: `pairing | allowlist | open | disabled`\n* `channels.line.allowFrom`: allowlisted LINE user IDs for DMs\n* `channels.line.groupPolicy`: `allowlist | open | disabled`\n* `channels.line.groupAllowFrom`: allowlisted LINE user IDs for groups\n* Per-group overrides: `channels.line.groups.<groupId>.allowFrom`\n\nLINE IDs are case-sensitive. Valid IDs look like:\n\n* User: `U` + 32 hex chars\n* Group: `C` + 32 hex chars\n* Room: `R` + 32 hex chars\n\n* Text is chunked at 5000 characters.\n* Markdown formatting is stripped; code blocks and tables are converted into Flex\n cards when possible.\n* Streaming responses are buffered; LINE receives full chunks with a loading\n animation while the agent works.\n* Media downloads are capped by `channels.line.mediaMaxMb` (default 10).\n\n## Channel data (rich messages)\n\nUse `channelData.line` to send quick replies, locations, Flex cards, or template\nmessages.\n\nThe LINE plugin also ships a `/card` command for Flex message presets:\n\n* **Webhook verification fails:** ensure the webhook URL is HTTPS and the\n `channelSecret` matches the LINE console.\n* **No inbound events:** confirm the webhook path matches `channels.line.webhookPath`\n and that the gateway is reachable from LINE.\n* **Media download errors:** raise `channels.line.mediaMaxMb` if media exceeds the\n default limit.",
"code_samples": [
{
"code": "Local checkout (when running from a git repo):",
"language": "unknown"
},
{
"code": "## Setup\n\n1. Create a LINE Developers account and open the Console:\n [https://developers.line.biz/console/](https://developers.line.biz/console/)\n2. Create (or pick) a Provider and add a **Messaging API** channel.\n3. Copy the **Channel access token** and **Channel secret** from the channel settings.\n4. Enable **Use webhook** in the Messaging API settings.\n5. Set the webhook URL to your gateway endpoint (HTTPS required):",
"language": "unknown"
},
{
"code": "The gateway responds to LINEs webhook verification (GET) and inbound events (POST).\nIf you need a custom path, set `channels.line.webhookPath` or\n`channels.line.accounts.<id>.webhookPath` and update the URL accordingly.\n\n## Configure\n\nMinimal config:",
"language": "unknown"
},
{
"code": "Env vars (default account only):\n\n* `LINE_CHANNEL_ACCESS_TOKEN`\n* `LINE_CHANNEL_SECRET`\n\nToken/secret files:",
"language": "unknown"
},
{
"code": "Multiple accounts:",
"language": "unknown"
},
{
"code": "## Access control\n\nDirect messages default to pairing. Unknown senders get a pairing code and their\nmessages are ignored until approved.",
"language": "unknown"
},
{
"code": "Allowlists and policies:\n\n* `channels.line.dmPolicy`: `pairing | allowlist | open | disabled`\n* `channels.line.allowFrom`: allowlisted LINE user IDs for DMs\n* `channels.line.groupPolicy`: `allowlist | open | disabled`\n* `channels.line.groupAllowFrom`: allowlisted LINE user IDs for groups\n* Per-group overrides: `channels.line.groups.<groupId>.allowFrom`\n\nLINE IDs are case-sensitive. Valid IDs look like:\n\n* User: `U` + 32 hex chars\n* Group: `C` + 32 hex chars\n* Room: `R` + 32 hex chars\n\n## Message behavior\n\n* Text is chunked at 5000 characters.\n* Markdown formatting is stripped; code blocks and tables are converted into Flex\n cards when possible.\n* Streaming responses are buffered; LINE receives full chunks with a loading\n animation while the agent works.\n* Media downloads are capped by `channels.line.mediaMaxMb` (default 10).\n\n## Channel data (rich messages)\n\nUse `channelData.line` to send quick replies, locations, Flex cards, or template\nmessages.",
"language": "unknown"
},
{
"code": "The LINE plugin also ships a `/card` command for Flex message presets:",
"language": "unknown"
}
],
"headings": [
{
"level": "h2",
"text": "Plugin required",
"id": "plugin-required"
},
{
"level": "h2",
"text": "Setup",
"id": "setup"
},
{
"level": "h2",
"text": "Configure",
"id": "configure"
},
{
"level": "h2",
"text": "Access control",
"id": "access-control"
},
{
"level": "h2",
"text": "Message behavior",
"id": "message-behavior"
},
{
"level": "h2",
"text": "Channel data (rich messages)",
"id": "channel-data-(rich-messages)"
},
{
"level": "h2",
"text": "Troubleshooting",
"id": "troubleshooting"
}
],
"url": "llms-txt#line-(plugin)",
"links": []
}