Install
$ agentstack add skill-citedy-adclaw-dingtalk-channel ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
DingTalk Channel Auto-Connect (Visible Browser)
This skill automates DingTalk app creation and AdClaw channel binding using a visible browser.
Mandatory Rules
- Must launch the browser in visible mode:
{"action": "start", "headed": true}
- Must pause at login gates:
- If the page shows a login screen (e.g., login form, QR code login, phone/password login), stop all automated actions immediately.
- Clearly instruct the user to log in manually first, then wait for the user to reply "logged in" or "continue".
- Do not proceed with subsequent steps until the user confirms.
- Any app configuration change requires creating a new version and publishing before it takes effect:
- After configuring bot-related settings, you must publish the bot.
- Whether creating a new app or modifying app info (name, description, icon, bot config, etc.), you must create a new version and publish.
- Do not claim the configuration is active until publishing is complete.
Pre-Execution Confirmation (Must Do First)
Before starting automated clicks, send the user a "configuration confirmation" that clearly states customizable fields, image specifications, and default values. Use the following structured confirmation:
- Let the user customize the following fields:
- App name
- App description
- Bot icon image URL or local path
- Bot message preview image URL or local path
- Clearly state image specifications (prominently):
- Bot icon: JPG/PNG only,
240x240pxminimum,1:1aspect ratio, under2MB, no rounded corners. - Bot message preview image:
png/jpeg/jpgformat, under2MB.
- Clearly state default values (used automatically if the user does not specify):
- App name:
AdClaw - App description:
Your personal assistant - Bot icon:
https://img.alicdn.com/imgextra/i4/O1CN01M0iyHF1FVNzM9qjC0_!!6000000000492-2-tps-254-254.png - Bot message preview image:
https://img.alicdn.com/imgextra/i4/O1CN01M0iyHF1FVNzM9qjC0_!!6000000000492-2-tps-254-254.png
- If the user provides no custom values, you must explicitly reply:
- "Proceeding with all default settings (AdClaw / Your personal assistant / default images)."
Image Upload Strategy (Both Links and Paths Supported)
- If the user provides a local path, use it directly for upload.
- If the user provides an image link, download it to a local temporary file first, then upload.
- The upload action sequence must be:
- Click the upload entry point on the page (to trigger the file chooser)
- Then call
file_uploadwith the local path array (paths_json)
- If an upload error occurs due to image specification mismatch (dimensions, aspect ratio, file size, format):
- Pause automation immediately
- Clearly ask the user to manually upload a compliant image
- After the user confirms "uploaded" or "continue", resume the workflow from the current step
Upload Practical Tips
- The
paths_jsonparameter offile_uploadmust be a "JSON string array" — note the escaping:
{
"action": "file_upload",
"paths_json": "[\"xxx.png\"]",
"frame_selector": "iframe[src*=\"/fe/app?isHideOuterFrame=true\"]"
}
- If the page content is inside an iframe, always include
frame_selector— otherwise the upload control or file chooser may not be found.
- You must click the upload entry point before calling
file_upload. Calling it directly will result in:
No chooser. Click upload then file_upload.
- Common structural features of the bot icon area that can be used for locating elements (examples):
text: "* Bot Icon"button: "Use App Icon"button: "avatar"(usually contains animg "avatar"inside)
- When the snapshot shows both "Use App Icon" and "avatar", prefer clicking the
avatarbutton to trigger the upload, then callfile_upload.
Automation Workflow
Step 1: Open the DingTalk Developer Console
- Launch the browser in visible mode (
headed: true) - Navigate to
https://open-dev.dingtalk.com/ - Call
snapshotto check if login is required
If login is required, pause with the following message:
> Login to the DingTalk Developer Console is required. I have paused automation — please log in using the browser window that appeared. Once done, reply "continue" and I will resume from the current page.
Step 2: Create an Internal Enterprise App
After the user confirms login, continue:
- Navigate to the creation path:
- App Development -> Internal Enterprise Apps -> DingTalk Apps -> Create App
- Fill in the app information (use user-provided values first, otherwise use defaults):
- App name: default
AdClaw - App description: default
Your personal assistant
- Save and create the app
If the page layout or text differs from expectations, re-run snapshot and locate elements based on visible text semantics.
Step 3: Add Bot Capability and Publish
- Click Add App Capability under App Capabilities, find Bot, and add it
- Toggle the switch button next to Bot Configuration to enabled
- Fill in Bot Name, Bot Summary, and Bot Description
- Upload the Bot Icon (user-provided or default):
- Click the image below the bot icon label
- Default image URL:
https://img.alicdn.com/imgextra/i4/O1CN01M0iyHF1FVNzM9qjC0_!!6000000000492-2-tps-254-254.png - If a link is provided, download it locally first, then upload
- If the image is rejected as non-compliant, pause and ask the user to manually upload a compliant image before continuing
- Upload the Bot Message Preview Image (user-provided or default):
- Click the image below the bot message preview image label
- Default image URL:
https://img.alicdn.com/imgextra/i4/O1CN01M0iyHF1FVNzM9qjC0_!!6000000000492-2-tps-254-254.png - If a link is provided, download it locally first, then upload
- If the image is rejected as non-compliant, pause and ask the user to manually upload a compliant image before continuing
- Confirm the message receiving mode is set to
Stream Mode - Select Publish — a confirmation dialog will appear, confirm the publish. Note: You must publish the bot before proceeding to the next step
Step 4: Create a Version and Publish
- Go to
App Publishing -> Version Management & Publishing - Create a new version (required after every configuration change)
- Fill in the version description, set app visibility to all employees
- Follow the on-screen prompts to complete publishing — a new dialog will appear, confirm the publish
- Only after seeing a successful publish status may you proceed to subsequent steps or tell the user the configuration is active
Step 5: Retrieve Credentials
- Go to
Basic Information -> Credentials & Basic Info - Inform the user that the
Client ID(AppKey) andClient Secret(AppSecret) are on this page. Do not modify them proactively — guide the user to bind them on their own
AdClaw Binding Methods
After obtaining the credentials, guide the user to choose one of the following methods:
- Console UI configuration:
- In the AdClaw console, go to
Settings -> Channels -> DingTalk - Enter the
Client IDandClient Secret
- Configuration file method:
"dingtalk": {
"enabled": true,
"bot_prefix": "[BOT]",
"client_id": "Your Client ID",
"client_secret": "Your Client Secret"
}
Path: ~/.adclaw/config.json, under channels.dingtalk.
Credential Delivery Requirements (Mandatory)
- The agent is only responsible for guiding the user to the credentials page and displaying the
Client IDand actualClient Secret. - The agent must not proactively modify the
consoleconfiguration or~/.adclaw/config.json. - The agent must instruct the user to fill in the credentials manually using one of these two methods:
- Console UI:
Settings -> Channels -> DingTalk - Configuration file: edit the
channels.dingtalksection in~/.adclaw/config.json
Browser Tool Call Pattern
Follow this default sequence:
startwithheaded: trueopensnapshotclick/type/select_option/press_keyas needed- frequent
snapshotafter page transitions stopwhen done
Stability and Recovery Strategy
- Prefer using
reffrom the latestsnapshot; only useselectorwhen necessary. - After each critical click or navigation, use a short wait (
wait_for) and immediately re-runsnapshot. - If the session expires or re-login is required mid-process, pause again and wait for the user to log in before resuming from the current step.
- If automation is blocked by tenant permissions, admin approval, or similar issues, clearly explain the blocker and ask the user to complete that step manually before continuing.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: citedy
- Source: citedy/adclaw
- License: Apache-2.0
- Homepage: https://pypi.org/project/adclaw/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.