Skip to main content
Glama

layercheck

Every RUN, COPY, and ADD in a Dockerfile leaves a layer in the image, and layers are where image size and build-cache pain live. layercheck reads a Dockerfile as plain text — no docker daemon, no build — and reports what it finds:

  • every instruction, parsed with \ continuations joined and blank lines and # comments skipped, each marked with whether it produces a layer

  • the layer count, and — when you supply per-layer sizes (as docker history reports them) — the total size and the layers ranked biggest first, so the fattest layer is the first thing you see

  • deterministic waste flags, each with the line it fires on:

    • CONSECUTIVE_RUN — a RUN immediately after another RUN; the two could be one layer

    • BROAD_COPY_EARLY — a COPY . . (or ./) placed before the dependency install step, busting its cache on every source change

    • APT_LEFTOVER — apt-get install without removing /var/lib/apt/lists in the same RUN

    • ADD_LOCAL — ADD used for an ordinary local file, where COPY is the clearer instruction (remote URLs and archives are fine)

If the supplied sizes do not line up with the number of layer-producing instructions, layercheck says so and names both counts instead of silently misaligning them.

CLI

npx @reneturcios/layercheck analyze --dockerfile Dockerfile
npx @reneturcios/layercheck analyze --dockerfile Dockerfile --sizes sizes.json
npx @reneturcios/layercheck --version

sizes.json is a JSON array of numbers: the size in bytes of each layer-producing instruction, in Dockerfile order. The analysis is printed as one JSON object: {layer_count, total_size_bytes, instructions, biggest_layers, waste_flags}.

Exit codes: 0 on success, 1 on a runtime error (including an unreadable file or a sizes length mismatch), 2 on a usage error.

Related MCP server: salesforce-deployment-guard

MCP server

npx -y @reneturcios/layercheck mcp

MCP client config:

{
  "mcpServers": {
    "layercheck": {
      "command": "npx",
      "args": ["-y", "@reneturcios/layercheck", "mcp"]
    }
  }
}

Tools

  • analyze_dockerfile_layers — Analyze a Dockerfile's layers and flag wasted ones.

    • dockerfile (string, required) — the Dockerfile text

    • layer_sizes (array of numbers, optional) — size in bytes of each layer-producing instruction, in Dockerfile order; its length must equal the number of layer-producing instructions

Docker

docker run -i ghcr.io/cloudcorprecords/layercheck
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/layercheck analyze --dockerfile /w/Dockerfile

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Audits infrastructure configurations (Dockerfiles, GitHub Actions, Kubernetes, Terraform/Compose) against 14 deterministic security rules, returning BLOCK/REVIEW/PASS verdicts and signing attestations. Helps agents verify deployment configs before applying them.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables local static analysis of AI deployment artifacts, producing SHA-256 hashes, serialized structure, defects, cautions, evidence gaps, and limitations without executing model code.
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables agents to validate Dockerfiles for build-breaking syntax errors, risky patterns like root users and secrets in ENV/ARG, and cache-order problems, returning every finding with its line and a fix. It also verifies referenced container images against public registries, reporting tag existence, digests to pin, supported platforms, last rebuild time, and end-of-life status with an upgrade tag.
    2
    1
    MIT