[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CYFMSN49KPA44X7XR862F9":3,"skill-same:01M6CYFMSN49KPA44X7XR862F9":65},{"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":22,"linkOnly":23,"markdownContent":24,"markdownBody":25,"frontMatter":26,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M6CYFMSN49KPA44X7XR862F9","wecom",null,"WeCom channel skill. Return normal replies directly. For proactive sends such as scheduled jobs, use the packaged wecom_send.py script.","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-wecom\u002Fsrc\u002Fskills\u002Fwecom\u002FSKILL.md",[],[5,19,20,21],"channel","use","jobs","2026-11-10 10:12:30",false,"---\nname: wecom\ndescription:\n  WeCom channel skill. Return normal replies directly. For proactive sends such as scheduled jobs,\n  use the packaged wecom_send.py script.\nmetadata:\n  channel: wecom\n---\n\n# WeCom Skill\n\nUse this skill when the current conversation is on WeCom.\n\n## Execution Policy\n\n- Normal replies in the current WeCom conversation: return the final text directly.\n- Proactive sends outside the current turn, such as scheduled jobs, tool notifications, and progress updates: call `wecom_send.py`.\n- Use `chat_id` from runtime context when available. If only `session_id` exists, derive it from `wecom:\u003Cchat_id>`.\n- Keep the response text-first. Markdown is supported.\n- Do not construct `req_id`, `stream_id`, or raw WebSocket payloads.\n\n## Current Context\n\nCurrent WeCom message JSON may include:\n\n- `message`\n- `message_id`\n- `message_type`\n- `sender_id`\n- `chat_type`\n- `quote`\n\n## Script Usage\n\n```bash\nuv run ${SKILL_DIR}\u002Fscripts\u002Fwecom_send.py \\\n  --chat-id \u003CCHAT_ID> \\\n  --content \"\u003CTEXT>\"\n```\n\nMulti-line content:\n\n```bash\nuv run ${SKILL_DIR}\u002Fscripts\u002Fwecom_send.py \\\n  --chat-id \u003CCHAT_ID> \\\n  --content \"$(cat \u003C\u003C'EOF'\nTask finished.\n- 12 checks passed\n- 0 failures\nEOF\n)\"\n```\n","# WeCom Skill\n\nUse this skill when the current conversation is on WeCom.\n\n## Execution Policy\n\n- Normal replies in the current WeCom conversation: return the final text directly.\n- Proactive sends outside the current turn, such as scheduled jobs, tool notifications, and progress updates: call `wecom_send.py`.\n- Use `chat_id` from runtime context when available. If only `session_id` exists, derive it from `wecom:\u003Cchat_id>`.\n- Keep the response text-first. Markdown is supported.\n- Do not construct `req_id`, `stream_id`, or raw WebSocket payloads.\n\n## Current Context\n\nCurrent WeCom message JSON may include:\n\n- `message`\n- `message_id`\n- `message_type`\n- `sender_id`\n- `chat_type`\n- `quote`\n\n## Script Usage\n\n```bash\nuv run ${SKILL_DIR}\u002Fscripts\u002Fwecom_send.py \\\n  --chat-id \u003CCHAT_ID> \\\n  --content \"\u003CTEXT>\"\n```\n\nMulti-line content:\n\n```bash\nuv run ${SKILL_DIR}\u002Fscripts\u002Fwecom_send.py \\\n  --chat-id \u003CCHAT_ID> \\\n  --content \"$(cat \u003C\u003C'EOF'\nTask finished.\n- 12 checks passed\n- 0 failures\nEOF\n)\"\n```\n",{"name":5,"metadata":27,"description":7},{"channel":5},"main","35c84fbc0b8339e5f3c94efb35a83adad292d067","packages\u002Fbub-wecom\u002Fsrc\u002Fskills\u002Fwecom",23,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib","https:\u002F\u002Fgithub.com\u002Fbubbuild","https:\u002F\u002Fbub.build","Bub it, build it.","2026-11-11 15:30:48",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add bubbuild\u002Fbub-contrib --skill wecom",{"tool":43,"command":44},"bunx","bunx skills add bubbuild\u002Fbub-contrib --skill wecom",{"tool":46,"command":47},"pnpm","pnpm dlx skills add bubbuild\u002Fbub-contrib --skill wecom","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-wecom\u002Fsrc\u002Fskills\u002Fwecom\u002FSKILL.md",true,[51,57,61],{"path":52,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":55,"sourceHtmlUrl":56},"__init__.py","SCRIPT","脚本",27,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-wecom\u002Fsrc\u002Fskills\u002Fwecom\u002F__init__.py",{"path":58,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":59,"sourceHtmlUrl":60},"scripts\u002F__init__.py",35,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-wecom\u002Fsrc\u002Fskills\u002Fwecom\u002Fscripts\u002F__init__.py",{"path":62,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":63,"sourceHtmlUrl":64},"scripts\u002Fwecom_send.py",4213,"https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-wecom\u002Fsrc\u002Fskills\u002Fwecom\u002Fscripts\u002Fwecom_send.py",[66,92,118,131,139,151],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":22},"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",[],[73,74,75,76,77,78,79,80,81,82,83,20,84,85,86,87,88,89,90,91],"tape dataset share review","share","review","run","research","codex","audit","sharing","trufflehog","generated","filtering","export","scanning","datasets","external research","scan","bub","artifact","upload",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":103,"publishedAt":22},"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",[98],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",[94,104,105,106,107,108,109,110,20,19,111,112,113,114,115,116,117],"just","runtime","outbound","message","emoji","reply","only","edit","editing","text","bot","placeholder","communication","out-of-band",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":22},"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",[],[120,113,125,126,127,19,20,109,128,129,130,89],"Media","tool","direct","default","conversation","calling",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":22},"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",[],[133,138,19,20],"messages",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":22},"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",[],[141,114,146,147,138,148,20,149,150,107,89],"create","integration","work","webhooks","discord bot",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":22},"01M6CYF72F9EBVVWSSFREAE9TR","dingtalk","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.","https:\u002F\u002Fgithub.com\u002Fbubbuild\u002Fbub-contrib\u002Fblob\u002Fmain\u002Fpackages\u002Fbub-dingtalk\u002Fsrc\u002Fskills\u002Fdingtalk\u002FSKILL.md",[],[153,19,113,158,107,20,159],"context","framework"]