Skills/ClawHub/iterate-skill

iterate-skill@3.13.0

BLOCKED· static only

Publisher claims: "Fully automated multi-round code iteration with configurable N-dimension parallel review, onboarding/personalization, and a cross-assistant installer/update system with mandatory SHA256 checksum verification. v3.0 adds a dual-mode (the original iterate mode plus a defensive-programming mode via /iterate defensive) that performs normal incremental coding tasks with defensive discipline end-to-end." Observed in sandbox: static analysis only — behavior not yet observed.

Registry ClawHubPublisher jingzhao-l · publishing for 54 daysInstalls 3,530Last detonated 5d ago

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-09 and scored it 46/100 (Blocked). Do not install it: the sandbox observed behaviour consistent with credential theft, exfiltration or persistence. Notable findings: Destructive file system command detected; Pipe-to-shell pattern; Destructive file system command detected. Summary: static analysis only — behavior not yet observed.

Behavior trace

Queued for honeypot run · static analysis only
t+CategoryObserved action

This 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

MEDIUM
npx invocation of non-well-known packageSKILL.md:371 · npx invocation of non-well-known package — may execute untrusted code安装 CLI:`npx iterate-skill-installer` 会自动安装 `iterate` CLI;也可手动 `pip install .` 或 `pipx install .`(从本仓库根目录)。Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Destructive file system command detectedscripts/validate.py:263 · Destructive file system command detected换行等),防止 ``pytest tests/; rm -rf /`` 这类以白名单前缀开头、后缀拼接Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
CRITICAL
Pipe-to-shell patterniterate_cli/personalize.py:224 · Pipe-to-shell pattern — downloads and immediately executes remote code#: ``bun x`` are the same idea. They are equivalent to ``curl … | sh``, so theyFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST06
MEDIUM
Python subprocess execution detectediterate_cli/guard.py:27 · Python subprocess execution detectedconfig can never chain extra shell through ``subprocess.run(..., shell=True)``.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Destructive file system command detectediterate_cli/doctor.py:849 · Destructive file system command detected# safety net. Otherwise a command like "make; rm -rf /" could pass theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Access to sensitive file pathsSKILL.md:428 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files- 绝不读取 `.env`、`.env.*`、`*.{key,pem,p12,crt,cer}`、`credentials.json`、`.aws/`、`.ssh/` 等敏感文件。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/guard.py:185 · Python subprocess execution detected``subprocess.run(..., shell=True)``.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
CRITICAL
Destructive command against a filesystem root or deviceiterate_cli/doctor.py:849 · Destructive command against a filesystem root or device# safety net. Otherwise a command like "make; rm -rf /" could pass theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Access to sensitive file pathsSKILL.md:14 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesskip: [".env", ".env.*", "*.key", "secrets/", "*.pem", "*.p12", "*.crt", "*.cer", "credentials.json", ".aws/", ".ssh/"]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 packageSKILL.md:1209 · npx invocation of non-well-known package — may execute untrusted code- `scripts/install.py update` 与 `npx iterate-skill-installer` 会从 GitHub Release 下载预上传的 `iterate-skill.tar.gz` + `SHA256SUMS.txt`。Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Access to sensitive file pathsSKILL.md:287 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files- **绝不读取** `.env`、`.env.*`、`*.{key,pem,p12,crt,cer}`、`credentials.json`、`.aws/`、`.ssh/` 等敏感文件。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 packageiterate_cli/cli.py:279 · npx invocation of non-well-known package — may execute untrusted code"Install the skill across AI assistants: npx iterate-skill-installer"Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectediterate_cli/completion.py:618 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Destructive file system command detectediterate_cli/doctor.py:245 · Destructive file system command detectedwhitelisted prefix cannot be abused to smuggle ``; rm -rf /`` styleFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/guard.py:246 · Python subprocess execution detectedproc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Destructive file system command detectediterate_cli/doctor.py:805 · Destructive file system command detectedcommand like ``pytest; rm -rf /`` must never pass a health gate simplyFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/guard.py:105 · Python subprocess execution detected#: ``subprocess.run(..., shell=True)``.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 packageSKILL.md:1214 · npx invocation of non-well-known package — may execute untrusted code- `npx iterate-skill-installer` 在复制 skill 文件的同时,会顺带把 `iterate` CLI 安装到 PATH(优先 `pipx` 隔离安装,否则 `pip install --user`),以便安装完成后可直接运行 `iterate onboard`。Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagenpm-installer/bin/cli.js:12 · npx invocation of non-well-known package — may execute untrusted code* npx iterate-skill-installer --globalFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagescripts/install.py:1590 · npx invocation of non-well-known package — may execute untrusted code# instead of a misleading "complete": a caller (e.g. the npx wrapper)Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commandnpm-installer/lib/installer.js:782 · Process kill command — agent can terminate processes// already spawned a compiler/download helper outlived the kill and keptFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/guard.py:274 · Python subprocess execution detectedproc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Process kill commandnpm-installer/test/mode.test.js:416 · Process kill command — agent can terminate processes// runCommand: the timeout must kill the WHOLE process group, not just theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
npx invocation of non-well-known packageiterate_cli/updater.py:492 · npx invocation of non-well-known package — may execute untrusted codetrustworthy — the npx installer and ``scripts/install.py`` bothFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagenpm-installer/bin/cli.js:10 · npx invocation of non-well-known package — may execute untrusted code* npx iterate-skill-installer --ai traeFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagenpm-installer/test/security.test.js:2 · npx invocation of non-well-known package — may execute untrusted code* Security-boundary tests for the npx installer.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commanditerate_cli/updater.py:961 · Process kill command — agent can terminate processes"""Best-effort kill of ``proc`` and its whole process group (POSIX only).Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Process kill commandnpm-installer/test/mode.test.js:420 · Process kill command — agent can terminate processes// completion; a group kill prevents it from ever being written.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Process kill commanditerate_cli/signing.py:244 · Process kill command — agent can terminate processes"""Best-effort ``gpgconf --kill gpg-agent`` for the throwaway homedir.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/signing.py:326 · Python subprocess execution detectedverified = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/install.py:572 · Python subprocess execution detectedverified = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/signing.py:259 · Python subprocess execution detectedsubprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actioniterate_cli/wizard.py:85 · File type combined with upload action — agent may exfiltrate local data files# Bounds enforced by config.schema.json for advanced-configuration inputs.Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
npx invocation of non-well-known packagenpm-installer/bin/cli.js:9 · npx invocation of non-well-known package — may execute untrusted code* npx iterate-skill-installerFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packageiterate_cli/personalize.py:145 · npx invocation of non-well-known package — may execute untrusted code# NOTE: `npx` is deliberately absent. `npx <pkg>` downloads and runs aFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedscripts/publish_qoder.py:229 · Python subprocess execution detectedproc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/install.py:561 · Python subprocess execution detectedimported = subprocess.run(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 packagescripts/install.py:1501 · npx invocation of non-well-known package — may execute untrusted code# Non-zero so the npx wrapper does not report a false success.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagenpm-installer/test/tarball.test.js:2 · npx invocation of non-well-known package — may execute untrusted code* Tarball safety-hardening tests for the npx installer.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagenpm-installer/test/mode.test.js:3 · npx invocation of non-well-known package — may execute untrusted code* decision — and parseChecksums() — the SHA256SUMS.txt parser — in the npxFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commandnpm-installer/lib/installer.js:812 · Process kill command — agent can terminate processes// timeout can kill the entire tree, not just the leader. It does notFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/personalize.py:148 · Python subprocess execution detected# `subprocess.run(..., shell=True)` in CI or on a teammate's machine —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 packagescripts/publish_qoder.py:424 · npx invocation of non-well-known package — may execute untrusted code("npm-installer/", "bootstrap installer", "`npx iterate-skill-installer` bootstrap (pull release + verify SHA256)"),Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagenpm-installer/bin/cli.js:13 · npx invocation of non-well-known package — may execute untrusted code* npx iterate-skill-installer --no-cliFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commandnpm-installer/test/mode.test.js:252 · Process kill command — agent can terminate processes// calling process.exit: library code must not kill the host process, so theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Process kill commanditerate_cli/updater.py:933 · Process kill command — agent can terminate processes# child runs in its own session so a timeout can kill the whole processFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
npx invocation of non-well-known packagenpm-installer/lib/installer.js:1533 · npx invocation of non-well-known package — may execute untrusted code// typo like "npx iterate-skill-installer trae" is not silently ignored.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedscripts/publish_qoder.py:203 · Python subprocess execution detectedproc = subprocess.run(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 packagenpm-installer/lib/installer.js:2 · npx invocation of non-well-known package — may execute untrusted code* iterate-skill-installer — Node.js entry point for npx one-command install.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagescripts/install.py:2085 · npx invocation of non-well-known package — may execute untrusted code#: exactly as the npx installer's ``parseChecksums`` skips them.Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commanditerate_cli/guard.py:378 · Process kill command — agent can terminate processes# no-op there, so the process group is not isolated; kill the leader.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Access to sensitive file pathsnpm-installer/test/tarball.test.js:211 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesassert.throws(() => validateEntryNames(['iterate/../etc/passwd'], dest), /\.\./);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/install.py:2525 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/signing.py:211 · Python subprocess execution detectedlisting = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectediterate_cli/signing.py:306 · Python subprocess execution detectedimported = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathsnpm-installer/test/tarball.test.js:209 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesassert.throws(() => validateEntryNames(['/etc/passwd'], dest), /absolute path/);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 packagescripts/install.py:1653 · npx invocation of non-well-known package — may execute untrusted code# "Nothing to uninstall" is a failure for the caller (e.g. the npxFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectediterate_cli/updater.py:940 · Python subprocess execution detectedproc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Process kill commandnpm-installer/test/mode.test.js:449 · Process kill command — agent can terminate processes// the post-kill fallback) rather than hang the installer forever. TheFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
npx invocation of non-well-known packagenpm-installer/bin/cli.js:11 · npx invocation of non-well-known package — may execute untrusted code* npx iterate-skill-installer --target /path/to/projectFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Process kill commandnpm-installer/test/mode.test.js:437 · Process kill command — agent can terminate processesassert.ok(groupTimedOut, 'group kill path must still report the timeout');Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
npx invocation of non-well-known packagescripts/publish_qoder.py:406 · npx invocation of non-well-known package — may execute untrusted code"optional: `npx iterate-skill-installer` downloads the release tarball "Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagenpm-installer/test/mode.test.js:283 · npx invocation of non-well-known package — may execute untrusted code// being silently ignored (fix: typos like "npx iterate-skill-installer trae").Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagescripts/install.py:1573 · npx invocation of non-well-known package — may execute untrusted code# "Installation complete." The <2.0.0 npx wrapper and CI callers relyFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Remote installer piped to shelliterate_cli/personalize.py:224 · Remote installer piped to shell#: ``bun x`` are the same idea. They are equivalent to ``curl … | sh``, so theyFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST07

Cost to the agent

Instructions loaded
≈15,283 tok
1 file · 73 in bundle

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

34 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%
  1. Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
  2. Destructive command against a filesystem root or device≈ +9 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
  3. Unclaimed publisher≈ +8 on the totalClaim jingzhao-l: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  4. Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
  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. npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
Publish a new version to ClawHub, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim jingzhao-lPropose a patch to the maintainer