Agent Economy Report

Skill code audit

CAUTION version 1.1.5 · audited 2026-09-09

ai-ppt-generator @ide-rea

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 purposeGenerate PowerPoint presentations using Baidu Wenku / Qianfan AI, with intelligent or user-chosen template selection (SKILL.md lines 2-9).
Observed behaviorReads 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 onlyCAUTION · runs subprocesses or eval/exec; reads credential-like environment variables: BAIDU_API_KEY
Verdict, AISAFE
Final verdictCAUTION (never better than either pass)

Capabilities

capabilityvs purposedetail
networkneededHTTPS 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.
credentialsneededReads 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.
shellneededsubprocess.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_readneededOnly resolves its own script directory to import ppt_theme_list and locate generate_ppt.py (scripts/random_ppt_theme.py lines 24-27, 255).

Findings

severityfinding
infoRequires 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")
infoAll 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/"
lowUser 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,
infoSubprocess 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(
infoRemote 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.

Network destinations in the code

domainservice ratingwhere
clawhub.ainot in the service indexskill-card.md:7
image0.bj.bcebos.comnot in the service indexSKILL.md:77
qianfan.baidubce.comnot in the service indexscripts/generate_ppt.py:10

Other facts

Binaries invokedbash, python3
Environment variables readBAIDU_API_KEY
Hard-coded walletsnone
Pipes a download to a shell0
eval / exec / subprocess4
base64 blobs0
File writes0
Persistence0

Files audited

filelinessha256
SKILL.md854e8a2cf7f73248d5…
_meta.json6f575979c27091283…
scripts/generate_ppt.py148bb587899e8ddedf0…
scripts/ppt_theme_list.py43b3a614ebd5855a56…
scripts/random_ppt_theme.py321badb623bf3035196…
skill-card.md42dad1ca6b088a755c…

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.

How this is computed

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).