Claude Code, Skill
Ego Decision Layer
多步线性浏览器任务(连续点击、翻页、搜索表单提交、导航跳转)的默认入口:用 ego-decision-layer 一条命令让决策层在单个 ego-browser 进程内闭环决策(默认 System One / Jev,可换本地 OpenAI 兼容后端;browser automation / multi-step click chain / form submit / navigation),不再每步退回大模型思考。单步动作、精确 DOM/选择器、批量抓取仍走 ego-browser 原生 API;也可把官方 ego-browser 技能入口接管成路
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV OBFUSCATION_MINIFIED_PAYLOAD SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
bench/test-handoff-prompt.mjs, line 104
fs.rmSync(HOME, { recursive: true, force: true }); - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
bench/baseline-engine.mjs, line 58
const res = await fetch(endpoint, { - NETWORK_UNNAMED_HOST Low
Calls a fixed host that the description does not name.
bench/baseline-engine.mjs, line 58
const res = await fetch(endpoint, { - SECRETS_PATH_DOTENV Low
Mentions a .env file.
bench/verify-protocol.md, line 19
| 文本模型 | 两栈同一个:opencode zen `https://opencode.ai/zen/v1`,`minimax-m3`(A 通过调用方传参显式指定同一 baseUrl/model/key 与 `x-opencode-session` 头,B 读 `jev-ultrafast/.env`) | - OBFUSCATION_MINIFIED_PAYLOAD Low
Contains a very long line with almost no spaces in a script or style file.
bench/test-update.mjs, line 40
write(path.join(clone,'collision.txt'),'local note');write(path.join(source,'collision.txt'),'remote file');git(source,'add','.');git(source,'commit','-m','remote collision');git(s - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
bench/baseline-engine.mjs, line 23
process.env.TYPESAFE_API_KEY_FILE,
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
bench/test-handoff-prompt.mjs, line 104
fs.rmSync(HOME, { recursive: true, force: true });
bench/test-no-bh-dependency.mjs, line 102
fs.rmSync(root, { recursive: true, force: true });
bench/test-rename-self.mjs, line 31
fs.rmSync(root, { recursive: true, force: true });
Show more
bench/test-rename-self.mjs, line 141
fs.rmSync(root, { recursive: true, force: true });
bench/test-route-trace.mjs, line 43
fs.rmSync(root, { recursive: true, force: true });
bench/test-route-trace.mjs, line 205
fs.rmSync(a + ".bak");
bench/test-route-trace.mjs, line 267
fs.rmSync(root, { recursive: true, force: true });
bench/test-update.mjs, line 38
n(clone,'local.txt'),'utf8'),'keep');});fs.unlinkSync(path.join(clone,'local.txt'));
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address. can reach api.typesafe.ai. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
bench/baseline-engine.mjs, line 58
const res = await fetch(endpoint, {
bench/baseline-engine.mjs, line 167
const res = await fetch(`${cfg.baseUrl.replace(/\/+$/, "")}/chat/completions`, {
bench/fix-baseline-engine.mjs, line 58
const res = await fetch(endpoint, {
Show more
bench/fix-baseline-engine.mjs, line 167
const res = await fetch(`${cfg.baseUrl.replace(/\/+$/, "")}/chat/completions`, {
bench/probe-raw.js, line 27
const res = await fetch("https://api.typesafe.ai/v1/systemone", {
bench/scroll-baseline-engine.mjs, line 58
const res = await fetch(endpoint, {
bench/scroll-baseline-engine.mjs, line 167
const res = await fetch(`${cfg.baseUrl.replace(/\/+$/, "")}/chat/completions`, {
bench/verify.sh, line 47
if command -v curl >/dev/null 2>&1 && ! curl -sf --max-time 2 http://127.0.0.1:8099/c.html >/dev/null 2>&1; then
examples/bench/arm-b-step.js, line 19
const res = await fetch(`${gw.baseUrl}/chat/completions`, {
AGENTS.md, line 59
| 不能起服务、不能访问 loopback | `server.listen()` 回调不触发;`fetch("http://127.0.0.1:…")` 挂起后 exit 0;外部 HTTPS 正常 |
README.md, line 668
运行时不能起服务也不能访问 loopback(`fetch("http://127.0.0.1:...")` 会挂起后 exit 0)。
SKILL.md, line 415
`fetch("http://127.0.0.1:…")` 会挂起后 exit 0。外部 HTTPS `fetch()` 正常。
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
bench/baseline-engine.mjs, line 23
process.env.TYPESAFE_API_KEY_FILE,
bench/baseline-engine.mjs, line 32
if (process.env.TYPESAFE_API_KEY) return process.env.TYPESAFE_API_KEY;
bench/verify-protocol.md, line 19
| 文本模型 | 两栈同一个:opencode zen `https://opencode.ai/zen/v1`,`minimax-m3`(A 通过调用方传参显式指定同一 baseUrl/model/key 与 `x-opencode-session` 头,B 读 `jev-ultrafast/.env`) |
Show more
bench/fix-baseline-engine.mjs, line 23
process.env.TYPESAFE_API_KEY_FILE,
bench/fix-baseline-engine.mjs, line 32
if (process.env.TYPESAFE_API_KEY) return process.env.TYPESAFE_API_KEY;
bench/lib.mjs, line 73
"缺少文本模型配置:把 .env(含 TEXT_MODEL_BASE_URL / TEXT_MODEL / TEXT_MODEL_API_KEY)放到 " +
bench/scroll-baseline-engine.mjs, line 23
process.env.TYPESAFE_API_KEY_FILE,
bench/scroll-baseline-engine.mjs, line 32
if (process.env.TYPESAFE_API_KEY) return process.env.TYPESAFE_API_KEY;
bench/test-credential-chain.mjs, line 25
process.env.TYPESAFE_API_KEY_FILE = explicit;
bench/test-credential-chain.mjs, line 26
delete process.env.TYPESAFE_API_KEY; // 避免真实环境变量干扰
bench/test-update.mjs, line 16
const run=(file,args,cwd=root,extra={})=>spawnSync(file,args,{cwd,env:{...env,...extra},encoding:'utf8',timeout:15000});
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains a minified payload.
OBFUSCATION_MINIFIED_PAYLOAD
bench/test-update.mjs, line 40
write(path.join(clone,'collision.txt'),'local note');write(path.join(source,'collision.txt'),'remote file');git(source,'add','.');git(source,'commit','-m','remote collision');git(s
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit e18567ee0c73. can delete files. can reach a host that is not written as a fixed address. can reach api.typesafe.ai. The description does not name that host. reads a credential or environment file. contains a minified payload.
Date and source
Date checked:
github.com
Commit graded: e18567ee0c7394be27f066d6317abfab866f4386
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.