Skills/npm/anti-slop-engineering

anti-slop-engineering@1.6.0

BLOCKED· install only

Publisher claims: "An Engineering Discipline Playbook, Agent Skill & Triage Guard for AI Coding Agents" Observed in sandbox: reads credential files, sends data to fd12:ea5f:789c:1:5000:a2:9cb4:cf86, 10.180.207.134, www.skills.sh.

Registry npm (MCP server)Publisher immamdouhaboammar · publishing for 159 daysInstalls 3,209Last detonated 4d ago

Coverage

Install scripts ran; no agent task scenario for this bundle.
Tested
install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · 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 (2 scenarios; install scripts ran; no agent task scenario for this bundle) on 2026-11-10 and scored it 28/100 (Blocked). Do not install it: the sandbox observed behaviour consistent with credential theft, exfiltration or persistence. Notable findings: Pipe-to-shell pattern; Access to sensitive file paths. Summary: reads credential files, sends data to fd12:ea5f:789c:1:5000:a2:9cb4:cf86, 10.180.207.134, www.skills.sh.

Behavior trace

Honeypot run · 32 s · 2 scenarios
t+CategoryObserved action
0.2sfilesystemread ~/.agents/skills/anti-slop-engineering/ · ~/.agents/skills/decision-guard/ · ~/.agents/skills/root-fix-gate/ · ~/.agents/skills/future-scale-gate/ · ~/.agents/skills/paranoid-principal-architect/ · ~/.agents/skills/install-anti-slop/ outside project
0.2sprocessexec /usr/bin/dirname
0.2sprocessexec /usr/bin/mkdir
0.2sprocessexec /usr/bin/rm
0.2sprocessexec /usr/bin/cp
0.2sprocessexec /usr/bin/chmod
13snetworkdirect connection to fd12:ea5f:789c:1:5000:a2:9cb4:cf86:0, bypassing the egress proxy · undeclared
13snetworkdirect connection to 10.180.207.134:0, bypassing the egress proxy · undeclared
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://registry.npmjs.org:443
13snetworkCONNECT tcp://api.github.com:443
13snetworkCONNECT tcp://github.com:443
13snetworkCONNECT tcp://www.skills.sh:443 · not in the allow-list, refused
13snetworkCONNECT tcp://www.skills.sh:443 · not in the allow-list, refused
13sprocessexec /app/apps/web/node_modules/.bin/npx
13sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/npx
13sprocessexec /app/node_modules/.bin/npx
13sprocessexec /pnpm/npx
13sprocessexec /usr/local/sbin/npx
13sprocessexec /usr/local/bin/npx
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/skills
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/work/acme-api/.claude/skills/anti-slop-engineering/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/work/acme-api/.claude/skills/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/work/acme-api/.claude/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/work/acme-api/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/work/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/home/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/setup/node_modules/.bin/git
13sprocessexec /tmp/ks-detonate-lsOzOJ/node_modules/.bin/git
13sprocessexec /tmp/node_modules/.bin/git
13sprocessexec /node_modules/.bin/git
13sprocessexec /usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/git
13sprocessexec /app/apps/web/node_modules/.bin/git
13sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/git
13sprocessexec /app/node_modules/.bin/git
13sprocessexec /pnpm/git
13sprocessexec /usr/local/sbin/git
13sprocessexec /usr/local/bin/git
13sprocessexec /usr/sbin/git
13sprocessexec /usr/bin/git
13sprocessexec /usr/lib/git-core/git
13sprocessexec /usr/lib/git-core/git-remote-https
13sprocessexec /app/apps/web/node_modules/.bin/cargo
13sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/cargo
13sprocessexec /app/node_modules/.bin/cargo
13sprocessexec /pnpm/cargo
13sprocessexec /usr/local/sbin/cargo
13sprocessexec /usr/local/bin/cargo
13sprocessexec /usr/sbin/cargo
13sprocessexec /usr/bin/cargo
13sprocessexec /sbin/cargo
13sprocessexec /bin/cargo
13sprocessexec /app/apps/web/node_modules/.bin/go
13sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/go
13sprocessexec /app/node_modules/.bin/go
13sprocessexec /pnpm/go
13sprocessexec /usr/local/sbin/go
13sprocessexec /usr/local/bin/go
13sprocessexec /usr/sbin/go
13sprocessexec /usr/bin/go
13sprocessexec /sbin/go
13sprocessexec /bin/go
13sprocessscript backend runs setup only
13sprocessscript backend runs setup only
19sprocesssecond launch, clock +45 days, CI unset
19sfilesystemread ~/.agents/skills/anti-slop-engineering · ~/.agents/skills/anti-slop-engineering/ · ~/.agents/skills/decision-guard · ~/.agents/skills/decision-guard/ · ~/.agents/skills/root-fix-gate · ~/.agents/skills/root-fix-gate/ outside project
19sprocessexec /usr/bin/dirname
19sprocessexec /usr/bin/mkdir
19sprocessexec /usr/bin/rm
19sprocessexec /usr/bin/cp
19sprocessexec /usr/bin/chmod
32snetworkdirect connection to fd12:ea5f:789c:1:5000:a2:9cb4:cf86:0, bypassing the egress proxy · undeclared
32snetworkdirect connection to 10.180.207.134:0, bypassing the egress proxy · undeclared
32sfilesystemread ~/.npmrc
32sfilesystemread ~/.npm/_logs · ~/.npm/_cacache/index-v5/94/20/9f7736468c664df22baf94367fc1ed384cf4bfc32d8f36e1d2ad5afcaa7d · ~/.npm/_cacache/content-v2/sha512/ab/8e/db726c9530859fe21397021bfd8327a91d3533b4ecfbbdfa2388af059a7d2bafa4e9cb79835e9faeddff950ed6f71229faf9e3f162052dddf0a77ef971f4 · ~/.npm/_npx/ac0ed6aa23b37c1e/package.json · ~/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.package-lock.json · ~/.npm/_npx/ac0ed6aa23b37c1e/node_modules outside project
32sfilesystemwrote ~/.npm/_cacache/tmp/42eb5325 · ~/.npm/_cacache/index-v5/94/20/9f7736468c664df22baf94367fc1ed384cf4bfc32d8f36e1d2ad5afcaa7d
32snetworkCONNECT tcp://registry.npmjs.org:443
32snetworkCONNECT tcp://api.github.com:443
32snetworkCONNECT tcp://github.com:443
32snetworkCONNECT tcp://www.skills.sh:443 · not in the allow-list, refused
32snetworkCONNECT tcp://www.skills.sh:443 · not in the allow-list, refused
32sprocessexec /app/apps/web/node_modules/.bin/npx
32sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/npx
32sprocessexec /app/node_modules/.bin/npx
32sprocessexec /pnpm/npx
32sprocessexec /usr/local/sbin/npx
32sprocessexec /usr/local/bin/npx
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/skills
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/.npm/_npx/ac0ed6aa23b37c1e/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/work/acme-api/.claude/skills/anti-slop-engineering/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/work/acme-api/.claude/skills/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/work/acme-api/.claude/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/work/acme-api/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/work/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/home/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/later/node_modules/.bin/git
32sprocessexec /tmp/ks-detonate-lsOzOJ/node_modules/.bin/git
32sprocessexec /tmp/node_modules/.bin/git
32sprocessexec /node_modules/.bin/git
32sprocessexec /usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/git
32sprocessexec /app/apps/web/node_modules/.bin/git
32sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/git
32sprocessexec /app/node_modules/.bin/git
32sprocessexec /pnpm/git
32sprocessexec /usr/local/sbin/git
32sprocessexec /usr/local/bin/git
32sprocessexec /usr/sbin/git
32sprocessexec /usr/bin/git
32sprocessexec /usr/lib/git-core/git
32sprocessexec /usr/lib/git-core/git-remote-https
32sprocessexec /app/apps/web/node_modules/.bin/cargo
32sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/cargo
32sprocessexec /app/node_modules/.bin/cargo
32sprocessexec /pnpm/cargo
32sprocessexec /usr/local/sbin/cargo
32sprocessexec /usr/local/bin/cargo
32sprocessexec /usr/sbin/cargo
32sprocessexec /usr/bin/cargo
32sprocessexec /sbin/cargo
32sprocessexec /bin/cargo
32sprocessexec /app/apps/web/node_modules/.bin/go
32sprocessexec /root/.cache/node/corepack/v1/pnpm/10.28.0/dist/node-gyp-bin/go
32sprocessexec /app/node_modules/.bin/go
32sprocessexec /pnpm/go
32sprocessexec /usr/local/sbin/go
32sprocessexec /usr/local/bin/go
32sprocessexec /usr/sbin/go
32sprocessexec /usr/bin/go
32sprocessexec /sbin/go
32sprocessexec /bin/go

Static findings

MEDIUM
Python subprocess execution detectedscripts/bump_version.py:167 · Python subprocess execution detectedsubprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/bump_version.py:260 · Python subprocess execution detectedsubprocess.run(["git", "-C", args.repo, "tag", "-a", f"v{ver}", "-m", f"Release v{ver}"], check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packageinstall.sh:114 · npx invocation of non-well-known package — may execute untrusted codeecho " • CLI triage: npx anti-slop-engineering --base HEAD"Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
File permission modification commandinstall.sh:45 · File permission modification command — agent changes file ownership/permissionschmod +x "$dest/bin/cli.js" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
MEDIUM
Remote installer piped to shellinstall.sh:21 · Remote installer piped to shell# Determine source directory (local clone or fresh clone via curl | bash)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST07
MEDIUM
File permission modification commandinstall.sh:46 · File permission modification command — agent changes file ownership/permissionschmod +x "$dest/scripts/diff_guard.py" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
MEDIUM
File permission modification commandinstall.sh:49 · File permission modification command — agent changes file ownership/permissionschmod +x "$dest/scripts/root_fix_guard.py" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
MEDIUM
Python subprocess execution detectedscripts/diff_guard.py:73 · Python subprocess execution detectedexists = subprocess.run(['git', '-C', str(repo), 'cat-file', '-e', f'{base}:{path}'], capture_output=True).returncode == 0Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/diff_guard.py:59 · Python subprocess execution detectedp = subprocess.run(['git', '-C', str(repo), *args], 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/diff_guard.py:82 · Python subprocess execution detectedexists = subprocess.run(['git', '-C', str(repo), 'cat-file', '-e', f'{base}:{path}'], capture_output=True).returncode == 0Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
CRITICAL
Pipe-to-shell patterninstall.sh:21 · Pipe-to-shell pattern — downloads and immediately executes remote code# Determine source directory (local clone or fresh clone via curl | bash)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST06
MEDIUM
npx invocation of non-well-known packagebin/cli.js:58 · npx invocation of non-well-known package — may execute untrusted codenpx anti-slop-engineering [command] [options]Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
File permission modification commandinstall.sh:48 · File permission modification command — agent changes file ownership/permissionschmod +x "$dest/scripts/decision_guard.py" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
MEDIUM
Python subprocess execution detectedscripts/bump_version.py:256 · Python subprocess execution detectedsubprocess.run(["git", "-C", args.repo, "commit", "-m", f"chore(release): v{ver}"], check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Access to sensitive file pathsscripts/forensic_hunter.py:427 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesr"(?i)(?:process\.env\.[A-Z0-9_]+|os\.getenv\([^)]+\))\s*(?:\|\||\?\?|,)\s*['\"](?:secret|password|admin|default|changeme|123456|dev)"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
npx invocation of non-well-known packagebin/postinstall.js:31 · npx invocation of non-well-known package — may execute untrusted codelog("Tip: Run 'npx skills add imMamdouhaboammar/anti-slop-engineering' to connect manually.");Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
File permission modification commandinstall.sh:47 · File permission modification command — agent changes file ownership/permissionschmod +x "$dest/scripts/sre_guard.py" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
MEDIUM
Python subprocess execution detectedscripts/bump_version.py:255 · Python subprocess execution detectedsubprocess.run(["git", "-C", args.repo, "add", "-A"], check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packageskills/decision-guard/SKILL.md:76 · npx invocation of non-well-known package — may execute untrusted code…cord following [record contract](references/decision-record.md). Audit it with `npx anti-slop-engineering decision audit <record.json> --json` (or `python3 scripts/decision_guard.py aud…Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedscripts/root_fix_guard.py:146 · Python subprocess execution detectedresult = subprocess.run(["git", "-C", str(repo), *git_args], capture_output=True, check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actionskills/root-fix-gate/SKILL.md:74 · File type combined with upload action — agent may exfiltrate local data files…. For a persistent packet, run `python3 scripts/root_fix_guard.py audit <record.json> --json` from the Anti-Slop repository, or its package CLI equivalent `npx anti-slop-engineering root-fix audit <record.json> --json` **only in a release …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/sre_guard.py:114 · Python subprocess execution detectedp = subprocess.run(['git', '-C', str(repo), *args], capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
LOW
Instructs the agent to modify its persistent memory or instruction filesbin/cli.js:265 · Instructs the agent to modify its persistent memory or instruction files · informational: not an instruction file2. Update SKILL.md & AGENTS.md with concise agent directivesFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
MEDIUM
npx invocation of non-well-known packageskills/root-fix-gate/SKILL.md:74 · npx invocation of non-well-known package — may execute untrusted code…ord.json> --json` from the Anti-Slop repository, or its package CLI equivalent `npx anti-slop-engineering root-fix audit <record.json> --json` **only in a release containing the command…Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedscripts/forensic_hunter.py:562 · Python subprocess execution detectedproc = subprocess.run(cmd, capture_output=True, text=True, check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packageskills/paranoid-principal-architect/SKILL.md:102 · npx invocation of non-well-known package — may execute untrusted codenpx anti-slop-engineering paranoid audit <record.json> --jsonFix: Pin versions and sources; vendor anything fetched at install time.
AST06

Cost to the agent

Instructions loaded
≈17,806 tok
6 files · 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 anti-slop-engineering@1.6.0 as of 4d ago. This is the package itself, not its dependencies.

What would make this Verified

52 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%

An override rule (credential_read_plus_egress) caps this verdict regardless of the score. The first item below has to go before anything else counts.

  1. Reads credential files≈ +27 on the totalThe sandbox saw reads under ~/.ssh, ~/.aws, ~/.npmrc, ~/.config or similar. Read only files inside the project, and only the ones the task needs.
  2. Contacts a host you did not declare≈ +23 on the totalList every host you talk to in SKILL.md frontmatter (`network: [api.example.com]`), or stop contacting the ones you cannot justify.
  3. Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
  4. Unclaimed publisher≈ +8 on the totalClaim immamdouhaboammar: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  5. Touches files outside the project≈ +7 on the totalKeep reads and writes inside the working directory, or declare the exact paths in `filesystem:` and explain why in the README.
  6. 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.
Publish a new version to npm, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim immamdouhaboammarPropose a patch to the maintainer