steamachievementnotifier
The npx commands are used to build the project from its own source code, which is fetched from the official GitHub repository; this is a normal part of the build process and does not execute untrusted remote code.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The npx commands are used to build the project from its own source code, which is fetched from the official GitHub repository; this is a normal part of the build process and does not execute untrusted remote code.
1 higher static finding superseded - not the current verdict (shown for transparency)
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell. Severity downgraded: Node.js consumer context.
-
PKGBUILD:32
npx tsc --build --clean && npx tsc && ./node_modules/.bin/electron-builder --linux --x64 --dir -c.electronDist=/usr/lib/$_electron/ -c.electronVersion=$(cat /usr/lib/$_electron/version) -
PKGBUILD:32
npx tsc --build --clean && npx tsc && ./node_modules/.bin/electron-builder --linux --x64 --dir -c.electronDist=/usr/lib/$_electron/ -c.electronVersion=$(cat /usr/lib/$_electron/version)
PKGBUILD
1 offending line(s) highlighted# Maintainer: hawkeye116477 <hawkeye11647 at gmail dot com>
pkgname=steamachievementnotifier
_pkgname="Steam Achievement Notifier"
_mainver=1.9
_subver=46
pkgver="${_mainver}.${_subver}"
_electron=electron42
pkgrel=1
pkgdesc="Shows fully customisable notifications when you unlock any achievement on Steam"
arch=('x86_64')
url="https://github.com/SteamAchievementNotifier/SteamAchievementNotifier"
license=('LicenseRef-unknown')
provides=("${pkgname}=${pkgver}")
conflicts=("${pkgname}")
depends=(
"${_electron}"
)
makedepends=(
'asar'
'git'
'nodejs-lts'
'npm'
'python'
)
source=("git+https://github.com/SteamAchievementNotifier/SteamAchievementNotifier.git#tag=${pkgver}")
sha256sums=('SKIP')
build() {
cd SteamAchievementNotifier
HOME="${srcdir}/.electron-gyp" npm install
npx tsc --build --clean && npx tsc && ./node_modules/.bin/electron-builder --linux --x64 --dir -c.electronDist=/usr/lib/$_electron/ -c.electronVersion=$(cat /usr/lib/$_electron/version)
}
package() {
cd "SteamAchievementNotifier"
install -d "${pkgdir}/usr/lib/${pkgname}"
cp -rf _release/linux-unpacked/resources/* "${pkgdir}/usr/lib/${pkgname}/"
install -Dm755 /dev/stdin "${pkgdir}/usr/bin/${pkgname}" <<EOF
#!/usr/bin/bash
exec $_electron /usr/lib/${pkgname}/app.asar --no-sandbox "\$@"
EOF
for i in 32 512; do
install -d "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps"
done
ln -Ts /usr/lib/${pkgname}/img/sanlogo.png \
"$pkgdir/usr/share/icons/hicolor/512x512/apps/${pkgname}.png"
ln -Ts /usr/lib/${pkgname}/img/32x32.png \
"$pkgdir/usr/share/icons/hicolor/32x32/apps/${pkgname}.png"
install -Dm755 /dev/stdin "${pkgdir}/usr/share/applications/${pkgname}.desktop" <<EOF
[Desktop Entry]
Name=Steam Achievement Notifier
Exec=steamachievementnotifier %U
Terminal=false
Type=Application
Icon=steamachievementnotifier
StartupWMClass=Steam Achievement Notifier
Comment=Steam Achievement Notifier
Categories=Utility;
EOF
}
Changes since previous scan
--- PKGBUILD @ 2026-09-16 00:03+++ PKGBUILD @ 2026-09-17 00:27@@ -2,7 +2,7 @@ pkgname=steamachievementnotifier _pkgname="Steam Achievement Notifier" _mainver=1.9-_subver=44+_subver=46 pkgver="${_mainver}.${_subver}" _electron=electron42 pkgrel=1Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 13:22:46 | Medium | 1 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |