iterate-skill@3.13.0
BLOCKED· static onlyPublisher 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.
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 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
安装 CLI:`npx iterate-skill-installer` 会自动安装 `iterate` CLI;也可手动 `pip install .` 或 `pipx install .`(从本仓库根目录)。Fix: Pin versions and sources; vendor anything fetched at install time.换行等),防止 ``pytest tests/; rm -rf /`` 这类以白名单前缀开头、后缀拼接Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a 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.config 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.# 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.- 绝不读取 `.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.``subprocess.run(..., shell=True)``.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# 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.skip: [".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.- `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.- **绝不读取** `.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."Install the skill across AI assistants: npx iterate-skill-installer"Fix: Pin versions and sources; vendor anything fetched at install time.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.whitelisted prefix cannot be abused to smuggle ``; rm -rf /`` styleFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.command like ``pytest; rm -rf /`` must never pass a health gate simplyFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.#: ``subprocess.run(..., shell=True)``.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.- `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.* npx iterate-skill-installer --globalFix: Pin versions and sources; vendor anything fetched at install time.# instead of a misleading "complete": a caller (e.g. the npx wrapper)Fix: Pin versions and sources; vendor anything fetched at install time.// already spawned a compiler/download helper outlived the kill and keptFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.// 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.trustworthy — the npx installer and ``scripts/install.py`` bothFix: Pin versions and sources; vendor anything fetched at install time.* npx iterate-skill-installer --ai traeFix: Pin versions and sources; vendor anything fetched at install time.* Security-boundary tests for the npx installer.Fix: Pin versions and sources; vendor anything fetched at install time."""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.// completion; a group kill prevents it from ever being written.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Best-effort ``gpgconf --kill gpg-agent`` for the throwaway homedir.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.verified = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.verified = subprocess.run(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.# 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.* npx iterate-skill-installerFix: Pin versions and sources; vendor anything fetched at install time.# NOTE: `npx` is deliberately absent. `npx <pkg>` downloads and runs aFix: Pin versions and sources; vendor anything fetched at install time.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.imported = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# Non-zero so the npx wrapper does not report a false success.Fix: Pin versions and sources; vendor anything fetched at install time.* Tarball safety-hardening tests for the npx installer.Fix: Pin versions and sources; vendor anything fetched at install time.* decision — and parseChecksums() — the SHA256SUMS.txt parser — in the npxFix: Pin versions and sources; vendor anything fetched at install time.// 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.# `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.("npm-installer/", "bootstrap installer", "`npx iterate-skill-installer` bootstrap (pull release + verify SHA256)"),Fix: Pin versions and sources; vendor anything fetched at install time.* npx iterate-skill-installer --no-cliFix: Pin versions and sources; vendor anything fetched at install time.// 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.# 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.// typo like "npx iterate-skill-installer trae" is not silently ignored.Fix: Pin versions and sources; vendor anything fetched at install time.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.* iterate-skill-installer — Node.js entry point for npx one-command install.Fix: Pin versions and sources; vendor anything fetched at install time.#: exactly as the npx installer's ``parseChecksums`` skips them.Fix: Pin versions and sources; vendor anything fetched at install time.# 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.assert.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.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.listing = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.imported = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.assert.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.# "Nothing to uninstall" is a failure for the caller (e.g. the npxFix: Pin versions and sources; vendor anything fetched at install time.proc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.// the post-kill fallback) rather than hang the installer forever. TheFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* npx iterate-skill-installer --target /path/to/projectFix: Pin versions and sources; vendor anything fetched at install time.assert.ok(groupTimedOut, 'group kill path must still report the timeout');Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."optional: `npx iterate-skill-installer` downloads the release tarball "Fix: Pin versions and sources; vendor anything fetched at install time.// being silently ignored (fix: typos like "npx iterate-skill-installer trae").Fix: Pin versions and sources; vendor anything fetched at install time.# "Installation complete." The <2.0.0 npx wrapper and CI callers relyFix: Pin versions and sources; vendor anything fetched at install time.#: ``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.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
34 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Destructive command against a filesystem root or device≈ +9 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- 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.
- Destructive file system command detected≈ +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.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.