research-pro@3.17.2
CAUTION· install onlyPublisher claims: "系统化研究 skill — 螺旋收敛模型。把任何问题(模糊或清晰)分解成子问题,迭代搜索,越搜越清晰,直到每个子问题都有答案。 Triggers: "帮我研究", "研究一下", "调研", "分析对比", "research", "investigate", "look up" 也触发: 竞品分析、市场调研、技术选型对比、趋势了解 Setup triggers: "安装 research-pro", "配置 research-pro", "research-pro doctor", "setup research-pro", "research-pro 未就绪" **Gates:** 开始外部搜索前必须通过 READY doctor 与 Search Target Confirmation Gate;所有交互式多源/外部研究必须先展示 Search Contract 并收到用户明确确认。唯一例外是一个用户明确提供的 URL/文件、且只要求读取/提取/摘要、不作跨源比较或推断的 `NARROW_SELFCHECK`(见 SKILL Phase 1)。 Does NOT trigger normal multi-source research: - 已经知道答案的简单事实问题 - 用户直接给了 URL/文件、且只要读取/提取/摘要的,按 Step 1.2 的 `NARROW_SELFCHECK` 处理(不进入跨源 research) - 代码调试、写代码任务 Output: 结构化研究报告(结论 + 子问题答案 + 来源 + 争议点 + 未解决缺口)" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
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-08 and scored it 72/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 · 2 scenariosStatic findings
**禁止:** 为检查配置而 `cat` / 打印 `.env` 内容。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.**⚠️ 裸第三方 CLI 必经 shim:** `tvly`/`firecrawl`/`youtube_transcript_api` 等只读 `process.env`,不会自动加载 `.env` 源 → 冷启动报 "No API key"。**必须**用 `node {baseDir}/scripts/run-with-creds.mjs <cmd> ...` 运行(进程内注水 env 再 Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.**凭据:** `scripts/lib/credentials.mjs`(never-override + allowlist)。通用 `~/.config/research-pro/.env`(`env.example`)。安全:`references/security.md`。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 编辑 ${home}/.env ,填入任意一个:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.cp "${baseDir}/env.example" "${home}/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.mkdir -p "${home}" && chmod 700 "${home}"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.* $RESEARCH_PRO_HOME/.env (default ~/.config/research-pro/.env)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.chmod 600 ~/.config/research-pro/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " cp $CFG/.env.example $CFG/.env && chmod 600 $CFG/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* their keys from process.env, but nothing hydrates their env — the .envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if [[ ! -f "$CFG/.env" ]]; thenFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Hermes: ~/.hermes/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.assert.match(skill, /打印 `\.env` \/ secret 值/, "no-secrets rule must remain");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.cp {baseDir}/env.example ~/.config/research-pro/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(" (none — export keys or create ~/.config/research-pro/.env)");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.cp "$ROOT/env.example" "$CFG/.env.example"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* OpenClaw: ~/.openclaw/.env + openclaw.json env / skills.entriesFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.mkdir -p ~/.config/research-pro && chmod 700 ~/.config/research-proFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod 600 ~/.config/research-pro/.envFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.# 再编辑 ~/.config/research-pro/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* sources (~/.hermes/.env, ~/.openclaw/.env, ~/.config/research-pro/.env) areFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.chmod 600 "${home}/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* ~/.config/research-pro/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " wrote $CFG/.env.example — copy to .env and add keys:"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.chmod 600 "${home}/.env"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod 700 "$CFG" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.echo " cp $CFG/.env.example $CFG/.env && chmod 600 $CFG/.env"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.posts.forEach((p, i) => console.log(formatPost(p, i + 1)));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.log(`📮 r/${subreddit} - ${sort} posts\n${'─'.repeat(50)}\n`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.posts.forEach((p, i) => console.log(formatPost(p, i + 1)));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.log(`📮 r/${post.subreddit}`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.log(`\n${post.title}`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.completed = 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.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
8 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- 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. Seen: ~/.config/research-pro/.env.example, ~/.config/research-pro/.env.example.
- Unclaimed publisher≈ +8 on the totalClaim mfang0126: 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.
- 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.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.