anti-slop-engineering@1.7.0
BLOCKED· install onlyPublisher 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:d000:2b:95f6:3c3a, 10.246.60.58.
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-12 and scored it 25/100 (Blocked). Do not install it: the sandbox observed behaviour consistent with credential theft, exfiltration or persistence. Notable findings: Credential pass-through configuration; Pipe-to-shell pattern; Access to sensitive file paths. Summary: reads credential files, sends data to fd12:ea5f:789c:1:d000:2b:95f6:3c3a, 10.246.60.58.
Behavior trace
Honeypot run · 49 s · 2 scenariosStatic findings
passFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " • CLI triage: npx anti-slop-engineering --base HEAD"Fix: Pin versions and sources; vendor anything fetched at install time.# 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.….4x 1h/5m for paging; 6.0x 6h/30m for ticketing). Audit telemetry records with `npx anti-slop-engineering observability audit <record.json> [--source <file>] --json`. 26. **Repo Memory …Fix: Pin versions and sources; vendor anything fetched at install time.chmod +x "$dest/scripts/decision_guard.py" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.r"(?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.chmod +x "$dest/scripts/sre_guard.py" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.proc = subprocess.run(cmd, cwd=repo_root, capture_output=True, text=True, check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.res = 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.chmod +x "$dest/scripts/diff_guard.py" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod +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.…erministic machine codes and remediation guidance. Audit contract records with `npx anti-slop-engineering contract audit <record.json> --json`. 23. **UI Craftsmanship, Copywriting & WCA…Fix: Pin versions and sources; vendor anything fetched at install time.chmod +x "$dest/bin/cli.js" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.npx anti-slop-engineering [command] [options]Fix: Pin versions and sources; vendor anything fetched at install time.# 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.…ing tabindex for composite controls, and ARIA live regions. Audit records with `npx anti-slop-engineering apple-craft audit <record.json> --json`. 25. **Observability & SLO Architect (G…Fix: Pin versions and sources; vendor anything fetched at install time.log("Tip: Run 'npx skills add imMamdouhaboammar/anti-slop-engineering' to connect manually.");Fix: Pin versions and sources; vendor anything fetched at install time.proc = subprocess.run(cmd, capture_output=True, text=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.res = subprocess.run(cmd, capture_output=True, text=True, check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.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.proc = 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.res = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True)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.name_proc = subprocess.run(["git", "diff", "--name-only", base], capture_output=True, text=True, check=False)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.res = 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.result = 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.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.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.p = 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.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.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.exists = 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.# 2. Hardcoded feature flags without kill switch or expirationFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = 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.p = 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.exists = 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.2. 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.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
No advisories in OSV for anti-slop-engineering@1.7.0 as of 2d ago. This is the package itself, not its dependencies.
What would make this Verified
55 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.
- 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.
- 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.
- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- 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.
- 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.
- Credential pass-through configuration≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.