paper-polisher-pro@7.7.0
CAUTION· static onlyPublisher claims: "AI-rate self-check and polish guidance for academic writing: sentence-level rewrite suggestions (locates and advises, never auto-rewrites), terminology and consistency checks, translation-smell, paragraph attribution, journal precheck with discipline context, style-norm conventions check, quality report, AIGC label check, plus `--batch DIR` with HTML summary. Reads .docx directly. Not for: document/PDF translation (doc-holmes), plagiarism checking (institutional systems), ghost-writing or executing rewrites (paper-rewriter); texts under 100 chars get no verdict by design. 100% local, zero upload; bundled tests + AST zero-network self-verification. Multi-layer rule engine + token spectrum + optional supervised Qwen3-0.6B ONNX layer + LLM fingerprint attribution + freshness pipeline. Base-engine numbers reproduce from bundled held-out evals; supervised columns are author-side (model not bundled)." 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-12 and scored it 63/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. 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
p = subprocess.run([sys.executable, str(HERE / "ai_detector.py"), str(path),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out._pp = subprocess.run([sys.executable, str(SCRIPTS / "pp.py")],Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.p = subprocess.run([sys.executable, str(SCRIPTS / script)] + args,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.…_suggest / workflow / term_report) ship JSON-Schema contracts (`schemas/*.schema.json`, draft-2020-12 subset). Self-check: `python3 scripts/pp.py schema --selfcheck` runs real engine outputs against every contract — contract/implementation…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.p = subprocess.run([sys.executable, str(SCRIPTS / script)] + args,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out._gc = subprocess.run([sys.executable, str(_gen), "--check"],Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.subprocess.run([sys.executable, str(HERE / "pp_explain.py"), str(wf)], timeout=180)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / script)] + args,Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.p = subprocess.run([sys.executable, str(SCRIPTS / "ai_detector.py"), empty_f, "--format", "json"],Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.…ndensed) - **v7.7.0 (2026-11-12)** — output contract schemas (`schemas/*.schema.json` + zero-dep validator `pp.py schema --selfcheck`, real-output-validated); manifest generator single-sourced (generated reads skill.json, --ch…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why._raw = (ZH_HUMAN[:40] + "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd") * 6Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.subprocess.run([sys.executable, str(HERE / "ai_detector.py"), demo], timeout=180)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(copy / "eval" / "release_smoke.py"),Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.python3 scripts/pp_mcp_server.py --transport http --port 8815 # 本地 HTTP(v7.2.0)Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.p = subprocess.run([sys.executable] + args, capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out._p = subprocess.run([sys.executable, str(SCRIPTS / "ai_detector.py"), _hu_file_hold,Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.p = subprocess.run([sys.executable, str(copy / "eval" / "release_smoke.py"), "--fast"],Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.subprocess.run([sys.executable, str(HERE / "pp_doctor.py")], timeout=180)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([sys.executable, str(HERE / "paragraph_report.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="ignore",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([sys.executable, str(HERE / "ai_detector.py"), demo], timeout=180)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.| batch mode (--batch) | .txt/.md/.docx <5 MB per file | >5 MB skipped by design; encrypted/image-only docx yield an explicit error, not silent empty output |Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.subprocess.run([sys.executable, str(HERE / "pp_fix_suggest.py"), demo, "--top", "3"], timeout=180)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run([py, ev, "--corpus", a.corpus, "--split", "test",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.… (12k chars). Local HTTP form (v7.2.0, multi-client reuse): `python scripts/pp_mcp_server.py --transport http --port 8815` — listens on 127.0.0.1 loopback only (consistent with the zero-net…Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.if a.json and not a.output:Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…DoctorQ Lab", "changelog": "v7.7.0: output contract schemas — schemas/*.schema.json (draft-2020-12 subset) for the four core outputs, a zero-dependency minimal validator (scripts/pp_schema.py) self-checking real engine outputs against all …Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.p = subprocess.run([sys.executable, str(Path(__file__).resolve()),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([PY, str(SCRIPTS / "pp.py"), *args],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_rewrite_check.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.bad = subprocess.run([sys.executable, str(SCRIPTS / "pp_rewrite_check.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_batch_report.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py"), "tour"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([PY, *map(str, args)], capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([PY, *map(str, args)], capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_fix_suggest.py"), "--demo"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, "-c", code],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run([PY, str(SCRIPTS / "pp_report_html.py"), str(evil),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_batch_report.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / script), str(p)],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_style_norm.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py")],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([PY, *map(str, args)], capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py"), "tour"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run([PY, str(SCRIPTS / "pp_report_html.py"), str(junk),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_report_bundle.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, PP, "no-such-cmd"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SERVER)], input="\n".join(lines),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_rewrite_check.py"), "--demo"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py"), "recommend", "功能太多不知从哪开始"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_fix_suggest.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "ai_detector.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, PP], capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "ai_detector.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, PP, "quickstart"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "freshness_refresh.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([PY, *map(str, args)], capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([PY, *map(str, args)], capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_fix_suggest.py"), p],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "ai_detector.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SERVER)], input="{broken",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py")],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.nγδFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.cls.proc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_project.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_doctor.py"), "--deep"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "term_check.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_doctor.py"), "--deep"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_verify.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py"), "scenarios", "项目"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([sys.executable] + args, capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "ai_detector.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r2 = subprocess.run([sys.executable, str(SCRIPTS / "pp_doctor.py"), "--deep"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_project.py"), str(d)],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_project.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([sys.executable] + args, capture_output=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py")],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_term_consistency.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(PKG / "eval" / "gen_integrity_manifest.py"), "--check"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.out = subprocess.run([sys.executable, str(SCRIPTS / "pp_verify.py"), "--json"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "term_check.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.nγδFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_mcp_server.py")],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "ai_detector.py"), "--help"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp.py")],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_fix_suggest.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_fix_suggest.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(PKG / "eval" / "gen_integrity_manifest.py")],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run([sys.executable, str(SCRIPTS / "pp_schema.py"), "--selfcheck"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.nγδFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.r_en = subprocess.run([sys.executable, str(SCRIPTS / "pp.py"), "scenarios"],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
17 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim docsor1212: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- 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.
- Unicode escape sequence detected≈ +2 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
- MCP server using network transport (SSE/HTTP)≈ +2 on the totalNamespace tool names and keep tool descriptions literal; no instructions to the agent inside them.