Production-readiness scan · 2026-11-09

sindresorhus/is-plain-obj

62/100

Workable, with significant gaps to close.

PARTIAL Dependencies were read from manifests only; transitive packages were not checked.

Fix first

medium

No lockfile committed

Dependency versions are declared as ranges, so two installs can resolve to different code and transitive dependencies could not be checked at all. Commit the lockfile your package manager produces.

medium

No start command is declared anywhere

The repository has a server entrypoint but no start script, Procfile, Docker CMD or platform config saying how to run it. Buildpacks guess, and guess differently from each other, so the first deploy either starts the wrong process or none at all.

index.js

medium

CI dependencies are not reproducibly pinned

The GitHub Actions workflow runs npm install rather than npm ci, and no lockfile is committed. Future transitive dependency changes can therefore alter test results without corresponding source changes.

Nine dimensions

DevOps
43
CI runs lint, AVA, and tsd checks on pushes and pull requests, but npm install is unpinned because no lockfile is committed.
Security
68
No runtime dependencies, advisories, or secret findings were found, and a security policy exists; no automated SAST or dependency-scanning workflow was evident.
Cost & infra
91
The zero-dependency library has minimal runtime infrastructure requirements, keeping hosting, build, and operational costs very low.
QA & testing
30
AVA unit tests and tsd type tests run in CI, but no coverage report or threshold is present and test details were not fully analyzed.
Performance
66
A benchmark entrypoint is present, but no benchmark results or performance budgets are recorded, so regressions cannot be tracked from the repository.
Architecture
68
A minimal single-package ESM boundary with explicit types is appropriate; no backup, migration, or additional service architecture appears necessary.
Code quality
62
Parsed JavaScript and TypeScript show clean linting and a small ESM surface, but only 29% of repository files were directly analyzed.
Observability
62
This small predicate library has no operational telemetry requirement, but it offers no diagnostic mode or structured reporting for rejected inputs.
Maintainability
72
Focused documentation, type declarations, permissive licensing, and conventional scripts aid upkeep, though most repository files were not directly analyzed.

Top findings (AI)

medium

CI dependencies are not reproducibly pinned

The GitHub Actions workflow runs npm install rather than npm ci, and no lockfile is committed. Future transitive dependency changes can therefore alter test results without corresponding source changes.

medium

Release publishing lacks an automated integrity path

No release workflow, provenance generation, or package-signing configuration is present. npm publication appears manual, so its integrity cannot be independently verified from the repository.

medium

Security checks are not repeatable in CI

The repository has a clean secret-scan result and a disclosure policy, but CI contains no dependency, SAST, or secret-scanning step to preserve those checks continuously.

medium

Test coverage is not demonstrated

test.js and index.test-d.ts exist and are executed by the test script, but no coverage report or threshold is provided. Most test contents were also outside the directly analyzed source sample.

Report sections

Open a section for the evidence that drove the score. If you open one first, start with Code.

What this scan inspected

Every section above links to the evidence behind it. Nothing on this page is asserted without a source.

Scan your own repo

Free scan. No signup.

Run free scan