cad-file-reader@0.41.1
CAUTION· static onlyPublisher claims: "读取 DWG/DXF,提取标注、几何证据、图层/块语义、MEP 拓扑、图纸对比、钢结构/市政识图候选和规范图集索引;不输出最终工程量" Observed in sandbox: static analysis only — behavior not yet observed.
Coverage
Static only; nothing was run yet.The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.
Is [email protected] safe to install?
KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-10 and scored it 47/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: Executable committed in an agent bundle; Executable committed in an agent bundle; Executable committed in an agent bundle. Summary: static analysis only — behavior not yet observed.
Behavior trace
Queued for honeypot run · static analysis onlyThis version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.
Static findings
cad_bridge_tunnel_road_traffic.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_batch.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_civil_defense_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_crane_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_curtain_wall_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_descriptive_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_pile_foundation_slope.cmdFix: Pin versions and sources; vendor anything fetched at install time.setup.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_doors_windows_stairs_insulation_waterproof.cmdFix: Pin versions and sources; vendor anything fetched at install time."libredwg": ("sudo apt-get install -y libredwg-tools # Debian/Ubuntu;"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.cad_statesync.cmdFix: Pin versions and sources; vendor anything fetched at install time."poppler": ("sudo apt-get install -y poppler-utils # Debian/Ubuntu;"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."Fedora/RHEL/SUSE 用 sudo dnf install -y libredwg-tools"),Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.cad_structural_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_steel_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_fire_prevention_accessibility_green_energy.cmdFix: Pin versions and sources; vendor anything fetched at install time."Fedora/RHEL/SUSE 用 sudo dnf install -y poppler-utils"),Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell." 1) 首选安装 LibreDWG:sudo apt-get install -y libredwg-tools(Debian/Ubuntu;"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.cad_validate.cmdFix: Pin versions and sources; vendor anything fetched at install time.deps_check.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_mep_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_electrical_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.read_cad.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_precast_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.doctor.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_municipal_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time."dylib 是 macOS 原生库格式。fix: 仓库内 sudo 二进制请走 platform 分支;Windows/Linux 由 pip wheel 提供"),Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.convert_dwg.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_site_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_hvac_plumbing_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_interior_finish_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.demo.cmdFix: Pin versions and sources; vendor anything fetched at install time.- 不修改系统级配置;全部写进技能目录下的 vendor/.env。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.cad_scan.cmdFix: Pin versions and sources; vendor anything fetched at install time.cad_landscape_geometry.cmdFix: Pin versions and sources; vendor anything fetched at install time.r = subprocess.run([sys.executable, str(client), "push",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo apt-get install -y "${APT_PACKAGES[@]}"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.env_file = SKILL_DIR / ".env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.find "$SKILL_DIR/scripts" -maxdepth 1 -type f -name '*.sh' -exec chmod +x {} + 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.proc = subprocess.run(cmd, capture_output=True, text=True, timeout=120)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.probe = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cp = subprocess.run(cmd, capture_output=True, text=True, timeout=budget)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.find "$SKILL_DIR/scripts" -maxdepth 1 -type f \( -name '*.sh' -o -name '*.py' \) ! -perm -u+x -exec chmod +x {} + 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(cmd, check=True, timeout=1200)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo dnf install -y python3-pip libredwg poppler-utils tesseract libreofficeFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run(command, cwd=str(outdir), timeout=120, check=False, capture_output=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["bash", str(install_sh)], check=True, timeout=1800)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(command, timeout=180, check=False, capture_output=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run([str(python), "-V"], capture_output=True, text=True, timeout=10)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.call(cmd)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.find "$SKILL_DIR/scripts" -maxdepth 1 -type f -name '*.sh' -exec chmod +x {} + 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.subprocess.run([tool, "--help"], capture_output=True, timeout=10)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# Windows 用扩展名判定可执行性,不要求 chmod +x;Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.return subprocess.run(cmd, text=True, **kw)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = 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.proc = subprocess.run(cmd, capture_output=True, text=True, env=env, timeout=timeout)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run([str(python), "-I", "-c", code],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(args, capture_output=True, text=True, timeout=timeout)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.find "${SKILL_DIR}/scripts" -maxdepth 1 -type f -name "*.sh" -exec chmod +x {} + 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.sudo yum install -y python3-pip libredwg poppler-utils tesseract libreofficeFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.run([interpreter, "-c", code], env=env, capture_output=True, text=True, timeout=120)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# 仅对命令类规则,在 .py 里只追 subprocess.run([...]) 这样的真实调用。Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = 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.sudo apt-get update -yFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.probe = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run([interpreter, "-c",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.find "$SKILL_DIR/scripts" -maxdepth 1 -type f \( -name '*.sh' -o -name '*.py' \) ! -perm -u+x -exec chmod +x {} + 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.r = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(cmd, env=env)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
33 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim lisong2003-lgtm: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Executable committed in an agent bundle≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- 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.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.