给钉钉的联系人或者群发送信息

WarnAudited by ClawScan on May 10, 2026.

Overview

This skill has a clear DingTalk automation purpose, but it can immediately send messages from your logged-in account via global keyboard automation and includes under-documented recipient and queue-file behavior.

Install only if you trust this skill to send DingTalk messages as you. Test with a harmless contact first, verify the exact recipient and message before every run, check that no test_config.json is present, and clear any send_queue.json files after interrupted batches.

Findings (7)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

An agent or script invocation can send DingTalk messages as the logged-in user, and wrong focus/window state could send text somewhere unintended.

Why it was flagged

The tool sends through global GUI automation and presses Enter to send, while the handler directly calls the send routine with no shown confirmation or preview gate.

Skill content
pyautogui.FAILSAFE = False ... pyautogui.press('enter') ... success, err = send_message_to_contact(contact, message)
Recommendation

Require explicit user confirmation with final recipient and message before each send, keep PyAutoGUI fail-safe enabled, verify the active DingTalk chat before pressing Enter, and limit batch size.

What this means

Messages sent by this skill will appear to come from the user's DingTalk account.

Why it was flagged

The skill relies on the user's already logged-in DingTalk desktop session, so actions are performed with that account's identity.

Skill content
钉钉 PC 客户端需要已安装并登录
Recommendation

Use it only on the intended DingTalk account and review every recipient/message before allowing the automation to run.

What this means

Users and recipients may believe messages will be marked as automated when the shown implementation may send them without that disclosure.

Why it was flagged

The documentation claims an automation-disclosure suffix is appended, but the shown send path copies and sends the raw message variable without adding that suffix.

Skill content
SKILL.md: "所有消息会自动在末尾追加 `【OpenClaw 自动发送】`"; server.py: "pyperclip.copy(message)"
Recommendation

Either implement the suffix consistently in every send path or remove the claim, and show the exact outgoing text before sending.

What this means

If such a config file exists, messages intended for real recipients could be redirected to a different contact.

Why it was flagged

An undeclared local test_config.json can switch test_mode on and replace all requested recipients with a test contact.

Skill content
config_file = os.path.join(os.path.dirname(__file__), "test_config.json") ... if test_mode: ... contacts = [test_contact for _ in contacts]
Recommendation

Remove test-mode recipient replacement from production, or document it clearly and require an explicit command-line opt-in before recipients are changed.

What this means

A bad or mistaken queue path could overwrite or delete files the process can access.

Why it was flagged

The tool schema allows a caller-controlled queue_file path, and the queue helpers write to and delete that path without a shown directory restriction.

Skill content
"queue_file": {"type": "string", "description": "队列文件路径(可选,默认使用临时文件)"} ... if queue_file: return queue_file ... with open(path, 'w', encoding='utf-8') as f ... os.remove(path)
Recommendation

Restrict queue files to a dedicated skill data directory, reject absolute paths and parent-directory traversal, and avoid exposing queue_file as a model-controlled argument.

What this means

Interrupted batches may leave message text and recipient lists on disk.

Why it was flagged

Batch mode stores contact names and message content in a local JSON queue until completion or cleanup.

Skill content
queue_data = {"contacts": contacts, "message": message, "current_index": 0, "test_mode": test_mode} ... json.dump(queue_data, f, ensure_ascii=False, indent=2)
Recommendation

Avoid putting highly sensitive content in batch queues, and manually remove send_queue.json after failures or aborted runs.

What this means

Users have less assurance about provenance and may install whatever current package versions pip resolves.

Why it was flagged

The required packages are reasonable for GUI automation, but the source is unknown and dependencies are unpinned.

Skill content
Source: unknown; Homepage: none; SKILL.md: "pip install pyautogui pygetwindow pillow pyperclip"; requirements.txt: "pyautogui\npygetwindow\npillow\npyperclip"
Recommendation

Publish a clear source/homepage, pin dependency versions, and provide an install spec that matches the documented setup.