CAUTION version 1.1.5 · audited 2026-09-09
This skill turns a topic into a PowerPoint deck by calling Baidu's Qianfan AI PPT API. Three small Python scripts list available templates, pick one automatically based on keywords in the topic, and stream generation status until a download URL is returned. It reads one secret from the environment, BAIDU_API_KEY, and sends it only as an Authorization header to qianfan.baidubce.com. Network traffic goes to Baidu only; there are no other destinations, no file writes, no persistence, no package installs, and no obfuscated or encoded code. The one subprocess call simply re-runs the sibling script generate_ppt.py with the chosen template IDs. Main thing to be aware of: your topic text (and any web_content you pass) is sent to Baidu, so don't use confidential material, and the skill needs access to your Baidu API key.
| Declared purpose | Generate PowerPoint presentations using Baidu Wenku / Qianfan AI, with intelligent or user-chosen template selection (SKILL.md lines 2-9). |
| Observed behavior | Reads BAIDU_API_KEY from the environment and issues HTTPS POST requests to https://qianfan.baidubce.com/v2/tools/ai_ppt/ endpoints (get_ppt_theme, generate_outline, generate_ppt_by_outline), streaming server-sent events and printing status JSON and the final PPT URL. random_ppt_theme.py maps keywords in the user's topic to a style category, picks a matching template, and launches generate_ppt.py as a subprocess using sys.executable with a fixed argument list. No files are written, no data is sent anywhere except Baidu, and no credentials other than the declared API key are touched. |
| Verdict, rules only | CAUTION · runs subprocesses or eval/exec; reads credential-like environment variables: BAIDU_API_KEY |
| Verdict, AI | SAFE |
| Final verdict | CAUTION (never better than either pass) |
| capability | vs purpose | detail |
|---|---|---|
| network | needed | HTTPS POSTs to https://qianfan.baidubce.com/v2/tools/ai_ppt/ for theme listing, outline generation and PPT generation (scripts/generate_ppt.py line 10, scripts/ppt_theme_list.py line 8). No other network destinations appear in code. |
| credentials | needed | Reads the declared BAIDU_API_KEY env var and sends it as a Bearer token to Baidu only (scripts/generate_ppt.py lines 30, 130; scripts/ppt_theme_list.py lines 10, 32). It is not written to disk or sent elsewhere. |
| shell | needed | subprocess.Popen re-invokes the local generate_ppt.py with a fixed argument list via sys.executable; no shell=True and no user-controlled command string (scripts/random_ppt_theme.py lines 259-274). |
| filesystem_read | needed | Only resolves its own script directory to import ppt_theme_list and locate generate_ppt.py (scripts/random_ppt_theme.py lines 24-27, 255). |
| severity | finding |
|---|---|
| info | Requires a Baidu API credential The skill needs the BAIDU_API_KEY environment variable, which is declared in SKILL.md metadata. The key is used only as an Authorization: Bearer header toward qianfan.baidubce.com; it is not logged, stored, or sent to any other host. scripts/generate_ppt.py:130 api_key = os.getenv("BAIDU_API_KEY") |
| info | All network traffic goes to a single declared vendor endpoint The only outbound destination is Baidu's Qianfan API, which matches the declared purpose and the skill card references. No hidden or IP-literal endpoints. scripts/generate_ppt.py:10 URL_PREFIX = "https://qianfan.baidubce.com/v2/tools/ai_ppt/" |
| low | User topic and optional web content are sent to a third party The presentation topic, generated outline/title and any --web_content string are POSTed to Baidu (lines 100-111). Anything the agent puts in these fields leaves the local environment. The skill card acknowledges this risk; users should avoid confidential material. scripts/generate_ppt.py:103 "query": query, |
| info | Subprocess launch is limited to the skill's own script The command is built as a list containing sys.executable and the absolute path to the sibling generate_ppt.py, with the query passed as a separate argument (lines 255-264). There is no shell interpretation, so the user topic cannot be used for command injection. scripts/random_ppt_theme.py:267 process = subprocess.Popen( |
| info | Remote responses are parsed as data, not executed Streamed server output is JSON-decoded and printed. There is no eval, exec, download-and-execute, or file write anywhere in the package. scripts/generate_ppt.py:119 yield json.loads(data_str) |
0 AI finding(s) were dropped because their file, line or quote did not match the package.
| domain | service rating | where |
|---|---|---|
| clawhub.ai | not in the service index | skill-card.md:7 |
| image0.bj.bcebos.com | not in the service index | SKILL.md:77 |
| qianfan.baidubce.com | not in the service index | scripts/generate_ppt.py:10 |
| Binaries invoked | bash, python3 |
| Environment variables read | BAIDU_API_KEY |
| Hard-coded wallets | none |
| Pipes a download to a shell | 0 |
| eval / exec / subprocess | 4 |
| base64 blobs | 0 |
| File writes | 0 |
| Persistence | 0 |
| file | lines | sha256 |
|---|---|---|
SKILL.md | 85 | 4e8a2cf7f73248d5… |
_meta.json | 6 | f575979c27091283… |
scripts/generate_ppt.py | 148 | bb587899e8ddedf0… |
scripts/ppt_theme_list.py | 43 | b3a614ebd5855a56… |
scripts/random_ppt_theme.py | 321 | badb623bf3035196… |
skill-card.md | 42 | dad1ca6b088a755c… |
For agents
JSON: https://agenteconomy.report/k/ai-ppt-generator.audit.json · badge: https://agenteconomy.report/k/ai-ppt-generator.audited.svg ·
skill rating: /k/ai-ppt-generator · commission an audit of any skill: US$ 29 per version.
The complete published package of this exact version was downloaded from the registry and read statically; nothing was executed. A deterministic pass extracts network destinations, binaries, environment variables, writes, install commands, obfuscation markers, subprocesses and wallets, each with file and line. An AI then reads the whole package with those facts and writes the summary, the capabilities and the findings under a strict schema; every finding it produces must cite a file, a line and the exact text, or it is dropped. The final verdict is the worst of the two passes. The audit does not change the skill's trust tier (policy); the author may respond through the dispute channel and the response is published here. Commissioned by: the Agent Economy Report (free program: the 150 most downloaded skills, September 2026).