1仕組みと動作原理
これは完全な指示型スキルです。ディレクトリ内には SKILL.md(82行)のみが存在し、スクリプトは一切含まれていません。実際の送信処理はエージェントがシェル上で実行します(付随スキルの送信スクリプトを呼び出すか、同等のインライン curl を使用)。
4. Sends via the WeCom webhook using the sender from `setup-notifications-via-wecom` (or an equivalent inline curl call).
認証情報は環境変数経由ではなく、共有設定ファイルの固定パスから読み込まれます。webhook_url(ボットの key を含む)、recipient_scope、recipient_label の3つはすべて ~/.config/setup-notifications-via-wecom/config.json から取得されます。
1. Reads `~/.config/setup-notifications-via-wecom/config.json` for `webhook_url`, `recipient_scope`, and `recipient_label`.
設定未存在時の即時停止(Fail-fast): 設定が存在しない場合は setup コマンドを1行出力して直ちに終了し、推測や一時的な自動生成は試みません。
If the config is missing, it prints the one-line setup command and stops.
受信者の種別は推測ではなく明示的に設定されます。self(ユーザー自身のチャネル)は承認不要で直接送信可能ですが、others(その他の人物やグループ)は必ず事前の人間による確認ゲートを通過する必要があり、そのゲートでは正確な label とメッセージ全文の提示が求められます。
3. If scope is `self`, sends without an authorization prompt. If scope is `others`, presents the exact label and message for human confirmation.
Tencent のエンドポイントは直接接続を要求するため、送信前にローカルのプロキシ環境変数を消去する必要があります。
2. Unsets all local proxy env vars (Tencent endpoints must be reached directly).
到達判定は送信側のレスポンスを基準とします。承認されたことは到達を意味せず、準備された pending item も配信受領書(レシート)には該当しません。
5. Reports success or the exact WeCom error; authorization alone is not delivery proof.
送信先および送信スクリプトのなりすまし防止規定: webhook URL から self/others を逆引き・推測してはならず、スクリプト名が send_wecom.py であることのみを理由に信頼してはなりません。
Use `setup-notifications-via-wecom`'s `set_recipient.py` command; never infer self versus others from the webhook URL, and never trust a script merely because its basename is `send_wecom.py`.
メッセージ形式の境界が明確に限定されています。プレーンテキストのみ、1通あたり4096バイト以内、テンプレート機能なし(テンプレートや構造化メッセージは付随スキルの担当)となっています。
Plain text only. No markdown cards, images, or @mentions.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | WeCom 群机器人 webhook(腾讯 qyapi.weixin.qq.com) |
| cli | curl(notify-wecom 许可的等价发送路径) |
| cli | uv run --no-project python(配套 sender 的推荐调用方式) |
| cli | set_recipient.py(配套 skill 提供,用于绑定/校验收件人身份与 sender 摘要) |
| package | Python 标准库 urllib(配套 sender 的 HTTP 层,非第三方包) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: 本スキル自体にはスクリプトが一切含まれません(notify-wecom/ ディレクトリ内を隠しファイル含め glob で再確認した結果、SKILL.md のみ)。エージェントに対して付随スキルの呼び出しを指示します
- scripts/ 或 SKILL.md: 外部言語ランタイム依存関係の動的インストールの宣言
- 网络端点: 外部ネットワークアクセスの宣言: POST https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=<bot key> (msgtype
- 本地工作目录: ファイルの読み書きおよび成果物の出力: 本スキル自体には書き込み指示は一切ありません
5二重目の独立検証
- [ok] 本 skill 无脚本、无隐藏资产 — glob(hidden=true、gitignore=false)显示 notify-wecom/ 下仅 SKILL.md 一个文件;无 scripts/、references/、templates/,亦无 .security-scan-passed。
- [discrepancy] WeCom 端点归属 — 第一遍若把 qyapi.weixin.qq.com 当作本 skill 自带端点即属越档:notify-wecom/SKILL.md 全文无该域名(只有配置路径与 Tencent endpoints must be reached directly 的泛指),URL 形态与示例出自 setup-notifications-via-wecom/SKILL.md。最终 JSON 已按来源分别标注(网络依赖引配套 skill 原文)。
- [ok] 配置路径与字段 — notify-wecom 与配套 skill 双侧一致:都指向 ~/.config/setup-notifications-via-wecom/config.json,字段为 webhook_url / recipient_scope / recipient_label;send_wecom.py 的 CONFIG_PATH 为同值绝对路径。
- [ok] self/others 门禁表述一致 — notify-wecom『self 免授权、others 需人工确认、scope 非法即停』与 setup-*『self may send automatically; others requires human confirmation; missing identity fails fast』同义,无矛盾。
- [ok] 交付验证声明 — 『authorization alone is not delivery proof』与配套『only the sender response proves delivery』一致,且未夸大为「保证送达」——反而明确 pending item 不是回执。
- [ok] 代理清理的执行方 — notify-wecom 只声明要清空代理变量;实际执行在配套实现里(send_wecom.py 文档串说明会清除 proxy 相关环境变量,inline curl 路径则用 env -u 前缀)。本 skill 是纪律声明方而非执行方,JSON 已如此表述。
- [unlocatable] 4096 字节上限可验证性 — 该数字是企微 text 消息的服务端限制,仓内既无对应校验代码也无出处引用(配套 sender 的可见部分为配置加载与重试逻辑);按文档声明收录,无法在源码取证。
- [ok] 无混淆/无隐藏执行面 — 82 行纯文本 markdown,检索 base64/eval/exec/os.system/HTTP 端点/密钥文件读取零命中;shell 代码块仅出现在使用示例的 /notify-wecom 调用行。
6結論
dfbd3822134d853e…