[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CYF72F9EBVVWSSFREAE9TR":3,"skill-same:01M6CYF72F9EBVVWSSFREAE9TR":111},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M6CYF72F9EBVVWSSFREAE9TR","dingtalk",null,"DingTalk channel skill. When $dingtalk appears in message context, return your response as text\nand the framework will deliver it. For programmatic sends (e.g. progress updates), use dingtalk_send.","bubbuild\u002Fbub-contrib","bubbuild","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F264669564?v=4","01M6CYEYPWPQJBCRCMJ415277Z","Bub Build","01M6CYEYVZ5WFRV560SC5E6GKE",19,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-dingtalk\u002Fsrc\u002Fskills\u002Fdingtalk\u002FSKILL.md",[],[5,19,20,21,22,23,24],"framework","text","context","channel","use","message","2026-11-10 10:12:30",false,"---\nname: dingtalk\ndescription: |\n  DingTalk channel skill. When $dingtalk appears in message context, return your response as text\n  and the framework will deliver it. For programmatic sends (e.g. progress updates), use dingtalk_send.\nmetadata:\n  channel: dingtalk\n---\n\n# DingTalk Skill\n\nWhen the message context contains `$dingtalk` and `chat_id`, you are in a DingTalk conversation.\n\n## Primary: Return Your Response Directly\n\n**To reply to a DingTalk user, simply return your response as text.** The framework will automatically deliver it to the correct conversation. No script call is required.\n\n- The `chat_id` from the message context is used automatically.\n- Just write your answer and end the turn. The user will receive it.\n\nExample: User asks \"What is 2+2?\" → You return \"4\" → The framework sends \"4\" to DingTalk.\n\n## When to Use the Script\n\nUse `dingtalk_send` only when you need to send **from within a tool** (e.g. a progress update during a long-running task, or a status message triggered by another tool).\n\n```bash\nuv run .\u002Fscripts\u002Fdingtalk_send.py --chat-id \u003CCHAT_ID> --content \"\u003CTEXT>\"\n```\n\nGet `chat_id` from the message context JSON (the `chat_id` field). For group chats it is `group:\u003CopenConversationId>`, for 1:1 it is the user's staff_id.\n\n## Context Fields\n\nWhen `$dingtalk` is in scope, the message context typically includes:\n\n- `channel`: `$dingtalk` — identifies this as a DingTalk conversation\n- `chat_id`: target for sending (e.g. `204818006723348842` for 1:1, or `group:xxx` for groups)\n\n## Response Policy\n\n- **Direct answers**: Return your response. The framework delivers it.\n- **Long-running tasks**: Return a short acknowledgment first (e.g. \"Working on it...\"), then continue. When done, return the final result.\n- **Errors**: Return an error message so the user sees it immediately.\n\n## Script Reference (for programmatic use)\n\n```bash\nuv run .\u002Fscripts\u002Fdingtalk_send.py \\\n  --chat-id \u003CCHAT_ID> \\\n  --content \"\u003CTEXT>\" \\\n  [--title \"\u003CTITLE>\"]\n```\n\n- `--chat-id`, `-c`: required\n- `--content`, `-m`: required\n- `--title`, `-t`: optional, default \"Bub Reply\"\n","# DingTalk Skill\n\nWhen the message context contains `$dingtalk` and `chat_id`, you are in a DingTalk conversation.\n\n## Primary: Return Your Response Directly\n\n**To reply to a DingTalk user, simply return your response as text.** The framework will automatically deliver it to the correct conversation. No script call is required.\n\n- The `chat_id` from the message context is used automatically.\n- Just write your answer and end the turn. The user will receive it.\n\nExample: User asks \"What is 2+2?\" → You return \"4\" → The framework sends \"4\" to DingTalk.\n\n## When to Use the Script\n\nUse `dingtalk_send` only when you need to send **from within a tool** (e.g. a progress update during a long-running task, or a status message triggered by another tool).\n\n```bash\nuv run .\u002Fscripts\u002Fdingtalk_send.py --chat-id \u003CCHAT_ID> --content \"\u003CTEXT>\"\n```\n\nGet `chat_id` from the message context JSON (the `chat_id` field). For group chats it is `group:\u003CopenConversationId>`, for 1:1 it is the user's staff_id.\n\n## Context Fields\n\nWhen `$dingtalk` is in scope, the message context typically includes:\n\n- `channel`: `$dingtalk` — identifies this as a DingTalk conversation\n- `chat_id`: target for sending (e.g. `204818006723348842` for 1:1, or `group:xxx` for groups)\n\n## Response Policy\n\n- **Direct answers**: Return your response. The framework delivers it.\n- **Long-running tasks**: Return a short acknowledgment first (e.g. \"Working on it...\"), then continue. When done, return the final result.\n- **Errors**: Return an error message so the user sees it immediately.\n\n## Script Reference (for programmatic use)\n\n```bash\nuv run .\u002Fscripts\u002Fdingtalk_send.py \\\n  --chat-id \u003CCHAT_ID> \\\n  --content \"\u003CTEXT>\" \\\n  [--title \"\u003CTITLE>\"]\n```\n\n- `--chat-id`, `-c`: required\n- `--content`, `-m`: required\n- `--title`, `-t`: optional, default \"Bub Reply\"\n",{"name":5,"metadata":30,"description":31},{"channel":5},"DingTalk channel skill. When $dingtalk appears in message context, return your response as text\nand the framework will deliver it. For programmatic sends (e.g. progress updates), use dingtalk_send.\n","main","35c84fbc0b8339e5f3c94efb35a83adad292d067","packages\u002Fbub-dingtalk\u002Fsrc\u002Fskills\u002Fdingtalk",23,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib","https:\u002F\u002Fgithub.com\u002Fbubbuild","https:\u002F\u002Fbub.build","Bub it, build it.","2026-11-11 01:18:06",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add bubbuild\u002Fbub-contrib --skill dingtalk",{"tool":47,"command":48},"bunx","bunx skills add bubbuild\u002Fbub-contrib --skill dingtalk",{"tool":50,"command":51},"pnpm","pnpm dlx skills add bubbuild\u002Fbub-contrib --skill dingtalk","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-dingtalk\u002Fsrc\u002Fskills\u002Fdingtalk\u002FSKILL.md",true,[55,61,67,71,75,79,83,87,91,95,99,103,107],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"__init__.py","SCRIPT","脚本",38,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-dingtalk\u002Fsrc\u002Fskills\u002Fdingtalk\u002F__init__.py",{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fartifact-contracts.md","REFERENCE","参考文档",9030,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Freferences\u002Fartifact-contracts.md",{"path":68,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":69,"sourceHtmlUrl":70},"scripts\u002F__init__.py",30,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-dingtalk\u002Fsrc\u002Fskills\u002Fdingtalk\u002Fscripts\u002F__init__.py",{"path":72,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":73,"sourceHtmlUrl":74},"scripts\u002Fanimation_style.cjs",1785,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Fscripts\u002Fanimation_style.cjs",{"path":76,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":77,"sourceHtmlUrl":78},"scripts\u002Fdingtalk_send.py",3561,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-dingtalk\u002Fsrc\u002Fskills\u002Fdingtalk\u002Fscripts\u002Fdingtalk_send.py",{"path":80,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":81,"sourceHtmlUrl":82},"scripts\u002Fexport_final_video.cjs",7294,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Fscripts\u002Fexport_final_video.cjs",{"path":84,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Fserve_range_preview.cjs",3665,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Fscripts\u002Fserve_range_preview.cjs",{"path":88,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Fuser_config.cjs",2363,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Fscripts\u002Fuser_config.cjs",{"path":92,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fwrite_render_mode.cjs",3998,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Fscripts\u002Fwrite_render_mode.cjs",{"path":96,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":97,"sourceHtmlUrl":98},"templates\u002Fstoryboard-audit.html",12916,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Ftemplates\u002Fstoryboard-audit.html",{"path":100,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":101,"sourceHtmlUrl":102},"templates\u002Ftimeline-preview.html",40958,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002Ftemplates\u002Ftimeline-preview.html",{"path":104,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":105,"sourceHtmlUrl":106},"动画\u002Fstyles.json",343,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002F动画\u002Fstyles.json",{"path":108,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":109,"sourceHtmlUrl":110},"用户配置\u002Fdefault.json",58,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002F口播成片\u002F用户配置\u002Fdefault.json",[112,138,146,170,183,191],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":25},"01M6CYFPNE130C5YPK6J05FK5G","tape-dataset-share-review","Export, filter, scan, and review shareable tape datasets produced by `tape-dataset-opendal`. Use when Codex needs to prepare Bub-generated tape data for public sharing, Hugging Face upload, external research handoff, or any review-sensitive export that must run CEL filtering, TruffleHog secret scanning on the staged artifact, and a final conservative LLM audit.","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Ftape-dataset-opendal\u002Fsrc\u002Fskills\u002Ftape-dataset-share-review\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,127,128,129,23,130,131,132,133,134,135,136,137],"tape dataset share review","share","review","audit","codex","research","run","sharing","trufflehog","generated","filtering","export","scanning","datasets","external research","scan","bub","artifact","upload",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":25},"01M6CYFMSN49KPA44X7XR862F9","wecom","WeCom channel skill. Return normal replies directly. For proactive sends such as scheduled jobs, use the packaged wecom_send.py script.","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-wecom\u002Fsrc\u002Fskills\u002Fwecom\u002FSKILL.md",[],[140,22,23,145],"jobs",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":157,"publishedAt":25},"01M6CYFH67JBZ9YEGQVDCFW3GV","slack","Slack skill for proactive outbound Slack communication: posting a message to a\nchannel or thread, editing an existing bot message, or adding an emoji reaction.\nUse when the bot needs to: (1) post a message somewhere OTHER than the current\nreply (e.g. a different channel, or a side note in the same thread),\n(2) edit a previously-sent bot message (e.g. a progress placeholder), or\n(3) acknowledge a message with a non-verbal emoji reaction.\nNOTE: normal replies to the current message are posted AUTOMATICALLY by the\nruntime — just answer as text. Reach for this skill only for proactive \u002F\nout-of-band sends and message edits.","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-slack\u002Fsrc\u002Fskills\u002Fslack\u002FSKILL.md",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",[148,158,159,24,160,161,162,163,164,165,166,20,167,168,169,22,23],"reply","emoji","outbound","runtime","only","bot","placeholder","communication","out-of-band","just","editing","edit",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":25},"01M6CYFENA72P45DFRZP9NVVM5","qq","QQ C2C and group channel skill. Use when Bub is handling a QQ conversation. In the default tool reply mode, reply by calling qq.send (text or media) and stay silent by not calling it. In direct reply mode, return the reply text; output exactly \u003Cno_reply\u002F> to stay silent.","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-qq\u002Fsrc\u002Fskills\u002Fqq\u002FSKILL.md",[],[172,177,178,179,20,180,22,23,158,181,182,135],"conversation","Media","tool","direct","default","calling",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":25},"01M6CYFC5D1T5JETNW8E99FG73","feishu","Use this skill to respond to messages from feishu channel.","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-feishu\u002Fsrc\u002Fskills\u002Ffeishu\u002FSKILL.md",[],[185,190,22,23],"messages",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":197,"publishedAt":25},"01M6CYF94FXGAF30CRJHN4ZVJ4","discord","Discord Bot integration for sending messages, managing channels, and responding to events.\nUse when Bub needs to: (1) Send messages to Discord channels, (2) Create Discord bot with discord.py,\n(3) Handle Discord events (on_message, on_member_join, etc.), (4) Work with Discord webhooks,\nor (5) Any Discord-related functionality.","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-discord\u002Fsrc\u002Fskills\u002Fdiscord\u002FSKILL.md",[],[193,190,198,199,163,24,135,200,201,23,202],"integration","create","webhooks","discord bot","work"]