Grades are a hygiene check, not a security guarantee.

Claude Code, Skill

Dsh Distillation Director

把一本书蒸馏成一组可执行的 Agent 技能——三闸判态制(防线3忠实度/盲测路由/达尔文体检),只判态不打分,门禁零🔴。触发:用户说「拆书」「蒸馏这本书」「蒸馏 XX」「把 XX 书做成 skill」「按手册/按流水线蒸这本书」。流程:输入决策树→阶段0整书理解→阶段1提取→阶段1.5验证→阶段2构造→阶段3链接→阶段4测试→阶段5交付;红线词分级+LLM终裁,机器层¥0先行,L2.5 单本约 ¥20。NOT for 简单总结、书评、读后感、作者人设角色扮演(后者用 huashu-nuwa)。

Compatibility: Not stated.

Grade B

Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_ENV_READ

Why this grade

  • PERMISSION_DELETE_FILES Low

    Contains a call that can delete files.

    scripts/gates/_plugdir.py, line 180 shutil.rmtree(d, ignore_errors=True)

  • NETWORK_NO_FIXED_HOST Low

    Makes a network call whose host is not written as a fixed address.

    scripts/gates/check_install_state.py, line 340 ' r=urllib.request.urlopen(u,timeout=8)\n'

  • SECRETS_ENV_READ Note

    Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.

    scripts/gates/_creds.py, line 45 v = (os.environ.get('DSH_CREDENTIALS') or '').strip()

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

    scripts/gates/_plugdir.py, line 180

    shutil.rmtree(d, ignore_errors=True)

    scripts/gates/accept7-ledger.py, line 614

    shutil.rmtree(tmp, ignore_errors=True)

    scripts/gates/assertion_gate.py, line 301

    shutil.rmtree(tmp, ignore_errors=True)

    Show more

    scripts/gates/check_bandid_single_source.py, line 241

    os.remove(fp)

    scripts/gates/check_gate_ledger.py, line 253

    shutil.rmtree(d, ignore_errors=True)

    scripts/gates/check_install_state.py, line 102

    p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,

    scripts/gates/check_install_state.py, line 448

    shutil.rmtree(tmp, ignore_errors=True)

    scripts/gates/check_judge_pack.py, line 77

    os.remove(os.path.join(ad, _GENPY))

    scripts/gates/check_judge_pack.py, line 111

    shutil.rmtree(tmp, ignore_errors=True)

    scripts/gates/check_plugin_portability.py, line 134

    r = subprocess.run([sys.executable, dst], capture_output=True, text=True,

    scripts/gates/check_plugin_portability.py, line 399

    r = subprocess.run([sys.executable, tgt], capture_output=True, text=True,

    scripts/gates/estimate_cost.py, line 41

    r = subprocess.run([exe, os.path.join(HERE, 'pdf_to_text.py'), '--pdf', pdf, '--probe'],

    scripts/gates/gate_layer_quotes.py, line 126

    r = subprocess.run([sys.executable, CLI, '--task', task, '--out', outp],

    scripts/gates/gate_selfmode_check.py, line 48

    p = subprocess.run([sys.executable, GATE, "--task", task, "--stage", stage],

    scripts/gates/gate_selfmode_check.py, line 57

    p = subprocess.run([sys.executable, GATE, "--task", task],

    scripts/gates/gate_selftest.py, line 87

    r = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8',

  • 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.

    NETWORK_NO_FIXED_HOST

    scripts/gates/check_install_state.py, line 340

    ' r=urllib.request.urlopen(u,timeout=8)\n'

    scripts/gates/ocr_deepseek_vision.py, line 184

    with urllib.request.urlopen(req, timeout=600) as resp:

    scripts/gates/ocr_pages.py, line 134

    with urllib.request.urlopen(req, timeout=300) as resp:

  • Secrets

    Note

    reads an environment variable.

    SECRETS_ENV_READ

    scripts/gates/_creds.py, line 45

    v = (os.environ.get('DSH_CREDENTIALS') or '').strip()

  • Agent instructions

    Pass

    No instruction to ignore earlier instructions or to hide a step.

  • Obfuscation

    Pass

    No encoded or minified payload found.

  • 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 7b67cc272399. can delete files. can reach a host that is not written as a fixed address. reads an environment variable.

Date and source

Date checked:

View source

github.com

Commit graded: 7b67cc2723990473fe86d7005e0e964fb1466f4a

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.

Read how this letter is chosen