volcengine-tts-feishu
Analysis
The skill mostly matches its TTS-and-Feishu purpose, but it should be reviewed because the Feishu send path uses local app credentials to post messages and has unsafe credential/temp-file handling details.
Findings (4)
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.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
output_path = os.path.join(tempfile.gettempdir(), f"volcengine_tts_{os.getpid()}.mp3") ... with open(output_path, 'wb') as fFor Feishu sending, the script writes audio to a predictable filename in the system temp directory instead of using a securely created temporary file.
websockets>=12.0
The documentation says the dependency is requests and the script imports requests, but requirements.txt installs an unpinned, apparently unused websockets package and omits requests.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
with open(args.openclaw_config) as f: cfg = json.load(f) ... feishu_app_secret = feishu["appSecret"] ... result = send_audio_message(token, args.send_to, file_key)
When --send-to is used, the script reads Feishu app credentials from the local OpenClaw config, obtains a tenant token, and sends an audio message. The registry metadata declares no primary credential or required config path, so this high-impact delegated authority is under-declared.
"curl", "-s", "-X", "POST", f"{FEISHU_API}/im/v1/files", "-H", f"Authorization: Bearer {token}"The Feishu tenant bearer token is passed to an external curl process as a command-line argument, which is a weaker handling pattern than keeping the token inside the Python HTTP client.
