Install gate
Skill connordibble/dibble/plugins/install-gate/skills/install-gate
Guardrails and craft for coding agents: portable skills, Claude Code plugins, and zero-dependency CLI checks for design tokens, supply-chain safety, evidence-backed writing, UI verification, and agent-tooling workflows.
npx -y skills add connordibble/dibble --skill install-gateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Supply-chain safety for package installs. Use when installing dependencies (npm/pnpm/yarn/bun, pip, cargo), when an install-gate report flags a package, when adding a dependency an AI or a snippet suggested, or when reviewing a package's safety before adding it. Especially relevant when the package name is unfamiliar, generic-sounding, or came from a model that might have hallucinated it.
SKILL.md
3.6 KB, as published. Nobody here has run it
Installing packages without inheriting someone else's supply chain
Package installs are the most direct code-execution path into a machine: the name resolves to code, and lifecycle scripts can run it before you've imported anything. A PreToolUse hook checks install commands against offline heuristics and blocks or questions the risky ones. This skill explains the categories so you resolve a flag correctly instead of reflexively overriding it.
The failure modes it catches
- Typosquats. A name one character off a popular package (
chaltforchalk,reqeustsforrequests). Blocked. There is no benign reason to install these; it's a fat-finger or a copy from a poisoned source. - Slopsquats. Plausible-but-nonexistent names that models invent
(
ai-utils-helper,openai-sdk-client). An attacker registers the name a model is likely to hallucinate, then waits. Flagged for verification because the hook can't check existence offline; you can, in one lookup. - Install-time execution.
--allow-scripts,--unsafe-perm,sudo pip. Blocked. These hand every dependency a chance to run code at install. - Non-registry sources. Git URLs, tarballs,
file:specs. Questioned, not blocked: sometimes legitimate, but they skip the registry's takedown and scanning, so they deserve a conscious yes.
Resolving a flag
BLOCK findings mean don't proceed as written. For a typosquat, the fix is almost always the correctly-spelled popular package the report names, so install that instead. For lifecycle-script flags, drop the flag; if a specific trusted dependency genuinely needs its build script, allow that one package explicitly rather than enabling scripts globally.
VERIFY findings mean confirm one fact before continuing. For a
slopsquat-shaped name, actually check the registry
(npm view <name>, pip index versions <name>, or the package page) and
confirm it exists, is not brand-new with zero downloads, and is the package
you meant. If a model suggested the dependency, this step is where you catch a
hallucinated import before it becomes an install. For a non-registry source,
confirm you trust the origin and, ideally, pin to a commit rather than a
moving branch.
Do not blanket-override the gate. When a flag is a false positive (a real, correctly-spelled package that happens to look generic), install it and move on. The gate exists to convert a silent install into a two-second decision, not to be argued with.
Checking a command without installing
node <this-skill-directory>/scripts/gate.mjs "pnpm add some-package"
Exits 1 if anything would be blocked, 0 otherwise, so it doubles as a CI lint on install commands in scripts or Dockerfiles.
What it does not do
It is offline and heuristic. It does not query the registry, so it can't see
download counts, package age, or a known-CVE advisory, and it won't catch a
compromised version of a legitimately-named popular package. Treat it as the
name-and-shape layer. Pair it with a lockfile, npm audit/pip-audit in CI,
and reading the source of anything unfamiliar before you depend on it. The
bundled popularity lists are a typosquat magnet set, not the whole registry;
an exotic-but-real package may draw a VERIFY, which is working as intended.