Skills/npm/dsh-fasthtml-desktop

dsh-fasthtml-desktop@2.0.1

CAUTION· install only

Publisher claims: "FastHTML + pywebview desktop application development skill as a distributable DeepSeek Harness (dsh) Cordis Bundle plugin. Registers the fasthtml-desktop Agent Skill (self-contained: SKILL.md plus references/, scripts/, templates/, examples/) as an embedd" Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry npm (MCP server)Publisher kuailexiaozixin · publishing for 91 daysInstalls 53Last detonated 4d ago

Coverage

Nothing executable in the bundle ran; the trace covers the install step only.
Tested
every file read, file written and host contacted by what ran
Not tested
use of the skill by an agent

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-10 and scored it 68/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: README links to an external installer; Privileged sudo command; Hidden zero-width characters detected. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 1 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.0sprocessscript backend runs setup only
0.0sprocessscript backend runs setup only
0.0sprocessno install scripts to re-run

Static findings

HIGH
README links to an external installerREADME.md → https://github.com/kuailexiaozixin/fasthtml-desktop/archive/refs/heads/main.ziphttps://github.com/kuailexiaozixin/fasthtml-desktop/archive/refs/heads/main.zipFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
File permission modification commandscripts/build_linux_appimage.py:11 · File permission modification command — agent changes file ownership/permissions# appimagetool: https://github.com/AppImage/appimagetool/releases (chmod +x, 加入 PATH)Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
MEDIUM
Python subprocess execution detectedscripts/sync_upstream.py:47 · Python subprocess execution detectedreturn subprocess.run(cmd, capture_output=True, text=True, timeout=timeout)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_fast_example.py:100 · Python subprocess execution detectedr = subprocess.run(cmd, capture_output=True, text=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_cross_platform.py:89 · Python subprocess execution detectedr = subprocess.run([sys.executable, "-c", f"import {mod}"], capture_output=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_windows_exe.py:76 · Python subprocess execution detectedif subprocess.run([str(self.python), "-c", f"import {mod}"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_windows_exe.py:94 · Python subprocess execution detectedprobe = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtemplates/shared/launcher.py:253 · Python subprocess execution detectedp = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_windows_exe.py:144 · Python subprocess execution detectedproc = subprocess.Popen([str(exe)], cwd=str(exe.parent),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_cross_platform.py:128 · Python subprocess execution detectedr = subprocess.run(cmd, cwd=HERE)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/ui_window_verify.py:621 · Python subprocess execution detectedproc = subprocess.Popen([args.exe])Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_linux_appimage.py:36 · Python subprocess execution detectedsubprocess.run(cmd, check=True, **kw)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedreferences/07-quality-gate/Test/02-e2e.md:14 · Python subprocess execution detectedproc = subprocess.Popen([str(exe_path)]) # 启动真实 EXEFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/sync_upstream.py:232 · Python subprocess execution detectedr = subprocess.run(cmd, capture_output=True, text=True, env=env, timeout=900)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_fast_example.py:143 · Python subprocess execution detectedsubprocess.run(["taskkill", "/F", "/T", "/PID", str(proc.pid)],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Privileged sudo commandscripts/build_linux_appimage.py:8 · Privileged sudo command — agent may execute with elevated privilegessudo apt install python3-venv libgirepository1.0-dev gir1.2-webkit2-4.1 libgtk-3-devFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
URL with suspicious TLDscripts/sync_upstream.py:75 · URL with suspicious TLD — commonly used for phishing/malwaref"https://ghfast.top/https://github.com/{repo}/archive/refs/heads/{ref}.tar.gz"]Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.
AST07
MEDIUM
URL with suspicious TLDmanifest.json:240 · URL with suspicious TLD — commonly used for phishing/malware"url": "https://fastht.ml/docs/llms-ctx-full.txt",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.
AST07
HIGH
Hidden zero-width characters detectedmanifest.json:1 · Hidden zero-width characters detected — may conceal content{Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
AST07
HIGH
Access to sensitive file pathsSKILL.md:143 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files…写代码**——骨架落地前,禁止开始写任何 .py 业务代码。 * **标准交付物(每个 f-d 项目必备)**:骨架 + `.gitignore` + `.env.example` + **`启动.bat`(一键双击启动器)** + **`launcher.py`(一键启动决策层,双击后端的唯一逻辑源)+ `launch…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actionSKILL.md:38 · File type combined with upload action — agent may exfiltrate local data files2. **深度清理**:按 `manifest.json` 的 `exclude` 排除无用产物(Playwright `output/`、`docs` 的 PDF/PPT/演示图、`screenshots/` 等),保留源码与可运行数据,省体积;Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedscripts/build_fast_example.py:115 · Python subprocess execution detectedproc = subprocess.Popen([str(exe)], cwd=str(exe.parent), env=env,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/sync_upstream.py:213 · Python subprocess execution detectedr = subprocess.run([py, "-m", "venv", str(vdir)], capture_output=True, text=True, env=env)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Access to sensitive file pathsscripts/gen_launchers.py:87 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files…eepseek.com/anthropic + setx ANTHROPIC_AUTH_TOKEN=<DeepSeek Key>),\n 也可在示例目录 .env 配置(环境变量优先于 .env)。未配置时页面可打开,发起对话会报错(上游行为,非缺陷)。", ), # 08:code-assistan…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_fast_example.py:57 · Python subprocess execution detectedif subprocess.run([str(self.python), "-c", f"import {m}"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Access to sensitive file pathsscripts/gen_launchers.py:67 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files… APP_NAME="Bricksmith", STARTUP_NOTE="提示:聊天/RAG 问答需要配置大模型 API Key —— 在 .env 中填入 XAI_API_KEY 或 OPENAI_API_KEY(任选其一,OPENAI_BASE_URL 可指向兼容网关)。\n 未配置 Key 时桌…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_cross_platform.py:139 · Python subprocess execution detectedr = subprocess.run([str(art)], capture_output=True, text=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/release_gate.py:81 · Python subprocess execution detectedp = subprocess.run(self.cmd, capture_output=True, text=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/build_windows_exe.py:122 · Python subprocess execution detectedr = subprocess.run(cmd, capture_output=True, text=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Access to sensitive file pathsscripts/gen_launchers.py:82 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# .env(已 gitignore,环境变量优先)。DeepSeek 端点会把 claude-haiku/sonnet 模型名自动映射到Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedtemplates/shared/launcher.py:320 · Python subprocess execution detectedsys.exit(subprocess.call(cmd, env=env))Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtemplates/shared/launcher.py:255 · Python subprocess execution detectedp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtemplates/shared/launcher.py:401 · Python subprocess execution detectedp = subprocess.run([sys.executable, "-m", "uv", "--version"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtemplates/shared/launcher.py:331 · Python subprocess execution detectedsubprocess.run([sys.executable, "-m", "venv", str(HERE / ".venv")], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05

Cost to the agent

Instructions loaded
≈5,156 tok
1 file · 80 in bundle

Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.

Known vulnerabilities

No advisories in OSV for dsh-fasthtml-desktop@2.0.1 as of 4d ago. This is the package itself, not its dependencies.

What would make this Verified

12 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%
  1. Unclaimed publisher≈ +8 on the totalClaim kuailexiaozixin: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  2. README links to an external installer≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
  3. Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
  4. Hidden zero-width characters detected≈ +4 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
  5. Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
  6. File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
Publish a new version to npm, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim kuailexiaozixinPropose a patch to the maintainer