skill-release-plus@1.1.1
CAUTION· install onlyPublisher claims: "Multi-hub skill publisher. Sign → Audit (placeholder) → Pack (clean tar.gz with exclude rules) → Publish to clawhub.com, skillhub.cn (Tencent Cloud), or GitHub Releases, all in one command. Pluggable adapter framework — add your own hub via a user-hook script (subprocess + JSON envelope). Single source of truth: one exclude.json, one signing pass, one package, fan out to N targets. Default target: clawhub only. Use --target all for all three real hubs, or --target user-hook:./my-script.sh for custom destinations. Triggers on: publish skill, release skill, push to skill hub, ship skill to multiple hubs, 发布 skill, 上传到 clawhub, 发布到 skillhub.cn, package only, 打包不发布." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- 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 (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-13 and scored it 76/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
".netrc", ".npmrc", ".pypirc",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.chmod +x my-publisher.shFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out._lib_config.py — Shared config loader with .env support + onboarding.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.4. **Global `~/.config/skill-release-plus/.env`**Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env.*", # .env.staging / .env.production 等(.env/.env.local 在用户层)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env", ".env.local",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""Append (or overwrite) keys to global .env with chmod 600."""Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.f"hook script not executable (chmod +x {self.hook_path})"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.return f"https://x-access-token:{self.token}@github.com/{owner}/{repo}.git"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.3. **Project-local `./.env`**Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.GLOBAL_ENV_FILE = GLOBAL_CONFIG_DIR / ".env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env.local",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.PROJECT_ENV_FILE = Path.cwd() / ".env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- Secrets: `.env`, `.secrets`, `*.pem`, `*.key`, `.token`Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.(`*.pem` / `*.key` / `id_rsa*` / `credentials.json` / `.env.*` /Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = 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.3. Project-local `./.env`Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# chmod 700 on parentFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.4. Global `~/.config/skill-release-plus/.env`Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.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
4 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim songhonglei: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- 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.
- URL with embedded credentials≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.