github JavaScript analyzed 369de4c

larryfang/claude-lab-for-pms

github

Interactive, no-code hands-on lab teaching Claude Desktop, Cowork, Connectors, Skills, Plugins, MCP, and Claude Code 101 — built for product managers and curious beginners.

maintainer
larryfang
licence
NOASSERTION
first seen
2026-06-05
last seen
2026-08-26
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in larryfang/claude-lab-for-pms
capabilities 0 tools
transport counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 369de4c · analyzer v33 · 5d ago

danger signals1

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 7

filesystem 2

  • fs (weak) larryfang-claude-lab-369de4c/scripts/check-links.mjs :1 import fs from "node:fs";
  • fs (weak) larryfang-claude-lab-369de4c/scripts/verify-course.mjs :1 import fs from "node:fs";

shell / exec 1

  • shell (weak) larryfang-claude-lab-369de4c/scripts/verify-course.mjs :4 import { spawnSync } from "node:child_process";

network 2

  • net larryfang-claude-lab-369de4c/assets/js/app.js :283 return fetch("content/" + file, { cache: "no-cache" }).then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.text(); }).then(function (t) { bodyCache[file] = t; return t; });
  • net (weak) larryfang-claude-lab-369de4c/scripts/check-links.mjs :28 const response = await fetch(url, { redirect: "follow", signal: controller.signal, headers: { "user-agent": "Claude-Lab-Link-Check/1.0" } });

declared dependencies 1

  • @playwright/test@1.62.1

perm:untrusted 1

  • untrusted larryfang-claude-lab-369de4c/assets/js/app.js :283 return fetch("content/" + file, { cache: "no-cache" }).then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.text(); }).then(function (t) { bodyCache[file] = t; return t; });