Docs

60 seconds with npx

One job: a green exit code on your bench before you read anything else. The package ships its own proof fixtures — the golden corpus — so nothing here depends on your data, your network, or an account.

$ npm i epcis.dev
$ CORPUS=node_modules/epcis.dev/golden-corpus

Every line below is a real run, executed 2026-07-31 against the published epcis.dev@0.1.0:

$ npx epcis.dev validate $CORPUS/valid-standard/object-event-shipping.json
valid	schema=epcis-json-schema.json	version=2.0.1
$ echo $?
0

$ npx epcis.dev validate $CORPUS/invalid/object-event-missing-action.json
schema-error	/epcisBody/eventList/0	must have required property 'action'
schema-error	/epcisBody/eventList/0	must match "then" schema
schema-error	/	must match "then" schema
invalid	errors=3
$ echo $?
1

$ npx epcis.dev hash $CORPUS/valid-standard/object-event-shipping.json
hash	0	ni:///sha-256;e5624abcce4b2fc226743e8891f69c12a07ad508953749d9b9ede6771424f91e?ver=CBV2.0

$ npx epcis.dev translate $CORPUS/xml-translation/object-event-1.2.xml
delivered	source=1.2	events=1	fidelity=round-trip-clean

$ npx epcis.dev conformance run --self | tail -1
state	passed	passed=18	failed=0	total=18

$ npx epcis.dev version
epcis.dev 0.1.0	epcis=2.0.1	cbv=2.0.1	suite=0.4.0

Note the second run: an invalid document exits 1 with per-path schema errors — the fail-closed path working is a verdict, not a crash.

The contract the transcript rides on

exitmeaning
0ok
1fail — a negative domain verdict (invalid document, failed translation, rejected capture, failed suite run), not a crash
2usage
3not-found (unreadable input)
4internal
  • Every verb takes --json: deterministic machine JSON, same data and same exit code as the token-cheap text lines above.
  • stdout is payload-only. Errors are typed on stderr — {"error":{"code","message","hint"?}} under --json — and the code strings are stable across releases: match on code, never on prose.
  • The verb set is closed: validate, hash, translate, capture, mcp, conformance run, conformance rejudge, pins, version. An unknown verb is a typed USAGE refusal with a hint, exit 2.

The package carries its own operating manual at node_modules/epcis.dev/AGENTS.md — the same contract, greppable where you already are. The site build checks that manual against the typed catalog these docs render from, so the two cannot drift.

Where next

We answer in writing. We take at most five conversations a month, only when you ask for one, and only after you already have the written read.