Run only the checks your change needs.
Verifika is a small verification CLI for developers and coding agents. List your checks
once. vfk runs only the ones your change affects and says exactly what
failed.
vfk runs the six checks it affects, four at a
time, waits for build before e2e, and skips docs.
Recorded with the real CLI.
How it works
-
Define your checks
One
verifika.config.jsonlists each check's command and the files that can affect it. -
Verifika selects
It compares your work with git, then matches
paths,dependsOnandinvalidateAll.vfk planshows each decision. -
Run and read
Selected checks run one at a time, or in parallel up to the limit you set. A pass is a short summary; a failure names the check, the cause and where the full log is.
{
"$schema": "./node_modules/verifika/schemas/verifika.schema.json",
"version": 1,
"changes": {
"invalidateAll": ["package.json", "package-lock.json", "tsconfig*.json"]
},
"checks": {
"format": { "command": "npm run format:check" },
"lint": { "command": "npm run lint", "paths": ["src/**/*.{ts,html}"] },
"typecheck": { "command": "npm run typecheck", "paths": ["src/**/*.ts"] },
"test": { "command": "npm test", "paths": ["src/**", "test/**"] },
"build": { "command": "npm run build", "paths": ["src/**"], "dependsOn": ["typecheck"] }
}
}
Why Verifika
-
Selective locally, complete in CI
On your machine, only checks whose files changed run. In CI and with
--all, every check runs. -
Deterministic
Selection comes from config, globs, dependencies and git. No heuristics, no LLM. When the scope is unclear, it runs everything.
-
Parallel, in order
Independent checks share a concurrency limit.
dependsOnorders the rest; if a dependency fails, its dependents are reported as blocked. -
Small output for agents
One line on success, a bounded preview on failure. A failing test that printed 94,900 bytes is reported in 369.
-
Results you can trust
Timeouts, fail-fast, exact exit codes, and process-tree cleanup. Tested on Linux, macOS and Windows.
-
Logs on disk, not in your context
Full output of every check is kept in
.verifika/. Read it when you need it withvfk logs.
Get started
npm install --save-dev verifika
npx vfk init # config and verify scripts from package.json
npx vfk plan # what would run for your changes, and why
npx vfk # run the checks your changes affect
npx vfk --all # run every check, before you push and in CI
vfk init maps conventional scripts like lint,
test and build to checks. Add paths to each so
local runs can skip what a change can't affect.
Using a coding agent? Paste the setup prompt below. It installs Verifika, writes the config for your repository, and adds the agent skill.
Read the documentation
Set up Verifika (https://github.com/alexportelli12/verifika) in this repository.
1. Check that Node.js is 22.13 or newer, and install the project's dependencies if
they are missing. Install Verifika as a dev dependency with this repository's
package manager (npm install --save-dev verifika, or the pnpm/yarn equivalent).
It provides the `vfk` command.
2. Run `npx vfk init` to create verifika.config.json, then refine it by reading
package.json, the CI workflows and the tool configs:
- One check per quality gate the project actually has (such as format, lint,
typecheck, unit tests, build). Do not invent checks for tools it does not use,
or add a check that another one already fully covers. Every command must be
non-interactive and exit on its own: no watch mode, no prompts, no dev servers.
- Give each check `paths` globs for the files that can affect it, so local runs
select only what a change needs. If unsure, leave `paths` out: the check then
runs on every change.
- Add `dependsOn` where one check needs another's output (for example e2e after build).
- Keep concurrency at 1 unless the checks clearly share no build outputs.
- Make sure package.json has two scripts: "verify": "vfk" (selective, for local
work) and "verify:ci": "vfk --all" (the full gate). `vfk init` adds them when
they are missing. If a "verify" or "verify:ci" script already exists, replace
it only when the configured checks cover everything it ran; otherwise leave it
and report the conflict. This is the one exception to the rule below about
existing scripts.
- If the CI workflow runs the gate some other way, report that switching it to
`npm run verify:ci` is recommended. Do not edit the workflow.
Reference: https://github.com/alexportelli12/verifika/blob/main/docs/configuration.md
3. Validate the config:
- Run `npx vfk --all`. If a check fails, decide whether the config is wrong (fix it)
or the project already fails that check (report it; do not fix it).
- Run `npx vfk plan`. Until this setup is committed, the changed package.json and
lockfile select every check; that is expected. Explain which checks a typical
source edit and a documentation-only edit would select once it is committed.
4. Install the agent skill: copy node_modules/verifika/skills/verifika into this
agent's skills directory (see
https://github.com/alexportelli12/verifika/blob/main/docs/agents.md).
Do not change source code or existing scripts to make checks pass (except "verify"
and "verify:ci", as step 2 describes), and do not commit.
Finish with: the checks you configured and why, the --all result, the expected
selection for those two edits, the scripts you added, replaced or left (with any
conflicts), any CI recommendation, and any existing failures you found.