astock-report

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

The stock-report automation is mostly coherent, but it appears to expose or under-declare API/webhook credentials, so it should be reviewed before installation.

Install only after the maintainer removes and rotates the exposed mkt_api_key, declares all required WeCom/MX/Tushare credentials, and you verify the webhook destination and cron schedules. Use a dedicated low-privilege webhook/API key rather than a personal or shared production credential.

Findings (5)

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.

ConcernMedium Confidence
ASI03: Identity and Privilege Abuse
What this means

An API key may be leaked or reused, and the user may unknowingly run a skill containing someone else's credential.

Why it was flagged

The static scan flags this SKILL.md line as a hardcoded API secret or token. A credential embedded in a skill artifact can be exposed to anyone who can view or install it.

Skill content
mkt_api_key = [REDACTED]
Recommendation

Remove the hardcoded key, rotate/revoke any exposed secret, and require users to provide their own declared credential via env var or config.

What this means

The skill can use local credentials to send reports to a WeCom webhook and access provider APIs.

Why it was flagged

The skill reads local/env credentials for WeCom webhook delivery and market-data providers. This is purpose-aligned, but it is more sensitive than the registry's 'Primary credential: none' declaration suggests.

Skill content
KEYS_DIR = "/workspace/keys" ... "WECOM_WEBHOOK_KEY" ... "TUSHARE_TOKEN" ... os.environ.get("MX_APIKEY", "")
Recommendation

Use dedicated, least-privilege keys; verify /workspace/keys contents; and declare required credentials in metadata.

What this means

If the external helper is missing or tampered with, credential handling and webhook posting could behave differently than the reviewed code.

Why it was flagged

The cron prompt imports a credential helper from outside the supplied skill package. This is plausible credential plumbing, but the referenced external helper is not reviewed in the provided artifacts.

Skill content
sys.path.insert(0, "/workspace/keys")
from keys_loader import get_webhook_url
Recommendation

Prefer the included reviewed loader or verify and protect the external /workspace/keys/keys_loader.py file before enabling automation.

What this means

Reports or alerts may be pushed to the configured WeCom channel automatically.

Why it was flagged

The prompt tells the agent to run local scripts and post the generated report to a webhook. This matches the automation purpose, but it is still direct tool use that can send messages without a human preview.

Skill content
subprocess.run(["python3", "/workspace/skills/a-stock-report/scripts/send_close_summary.py"], ...)
... ["curl", "-s", "-X", "POST", get_webhook_url(), ...]
直接执行,不解释。
Recommendation

Test with a private webhook or dry run first, and enable scheduled pushes only after confirming the destination and content.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

The skill may continue running and posting on its schedule until the jobs are disabled.

Why it was flagged

The skill documents recurring cron-style execution, including frequent intraday alert checks. This is disclosed and aligned with the report/alert purpose, but it is persistent autonomous activity.

Skill content
盘中预警 | 交易时段每5分钟 ... wakeMode | now
Recommendation

Review all installed cron jobs, confirm the schedule is wanted, and document how to disable or remove the jobs.