Grades are a hygiene check, not a security guarantee.

Claude Code, Skill

Verbatim Linkedin

Router for Verbatim, the LinkedIn post bundle.

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 NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ

Why this grade

  • PERMISSION_DELETE_FILES Low

    Contains a call that can delete files.

    app/verbatim_app/interview.py, line 1276 shutil.rmtree(here)

  • NETWORK_NO_FIXED_HOST Low

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

    app/verbatim_app/static/interview.js, line 499 return fetch(url, {

  • NETWORK_UNNAMED_HOST Low

    Calls a fixed host that the description does not name.

    app/verbatim_app/static/interview.js, line 499 return fetch(url, {

  • SECRETS_PATH_DOTENV Low

    Mentions a .env file.

    check.sh, line 55 step "no .env and no key material is tracked"

  • SECRETS_ENV_READ Note

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

    scripts/eval.py, line 473 key = os.environ.get("VERBATIM_API_KEY") or os.environ.get(

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

    app/verbatim_app/interview.py, line 1276

    shutil.rmtree(here)

    app/verbatim_app/tools.py, line 67

    - The subprocess passed its deadline and was killed. `subprocess.run`

    app/verbatim_app/tools.py, line 180

    return subprocess.run(

    Show more

    lib/publish.py, line 263

    proc = subprocess.run(

    scripts/build-engines.py, line 358

    shutil.rmtree(tmp, ignore_errors=True)

  • 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 pypi.org. The description does not name that host.

    NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST

    app/verbatim_app/static/interview.js, line 499

    return fetch(url, {

    scripts/eval.py, line 379

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

    scripts/eval.py, line 400

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

    Show more

    scripts/eval.py, line 413

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

    scripts/macos-app.sh, line 22

    # plus curl and shasum. It does NOT need uv or git on the build machine, and

    scripts/macos-app.sh, line 88

    [ -f "$UV_TAR" ] || curl -fsSL -o "$UV_TAR" "$BASE/uv-$UV_TRIPLE.tar.gz"

    scripts/macos-app.sh, line 89

    [ -f "$UV_SUM" ] || curl -fsSL -o "$UV_SUM" "$BASE/uv-$UV_TRIPLE.tar.gz.sha256"

    scripts/macos-app.sh, line 242

    if ! curl -sS -o /dev/null --max-time 10 https://pypi.org/simple/ 2>/dev/null; then

    scripts/macos-app.sh, line 270

    curl -s -o /dev/null "http://127.0.0.1:\$PORT" && exit 0

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_DOTENV

    check.sh, line 55

    step "no .env and no key material is tracked"

    check.sh, line 56

    secrets="$(git ls-files | grep -E '(^|/)\.env($|\.)|\.pem$|_rsa$' | grep -v '\.env\.example$' || true)"

    scripts/eval.py, line 473

    key = os.environ.get("VERBATIM_API_KEY") or os.environ.get(

    Show more

    app/verbatim_app/cli.py, line 51

    + "); the screens work, the interview waits. See .env.example",

    app/verbatim_app/providers.py, line 145

    """Parse a .env file into a map. An empty value counts as unset, because

    app/verbatim_app/providers.py, line 146

    .env.example ships every key empty and copying it must not blank the

    app/verbatim_app/providers.py, line 176

    profile") would otherwise stop their app, and `.env.example` invites being

    app/verbatim_app/providers.py, line 214

    The instance .env carries the choice of provider, model and endpoint. The

    app/verbatim_app/providers.py, line 219

    path = root / ".env"

  • 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 425f3edebe93. can delete files. can reach a host that is not written as a fixed address. can reach pypi.org. The description does not name that host. reads a credential or environment file.

Date and source

Date checked:

View source

github.com

Commit graded: 425f3edebe9326400adfd06df2cffb931b7d9f09

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