Skip to main content
OpenTrain CLI 0.14.0 includes two job-quality command families:
  • opentrain feedback manages employer-private reviewer reports and reviewer grants.
  • opentrain checklists provides a file-first workflow for adaptive checklist authoring, visual review, publishing, and submission inspection.
Confirm npm view @opentrain-ai/cli version reports 0.14.0 or later and opentrain capabilities reports both job_feedback and job_checklists as available. A package can be published before a particular deployment or account has enabled the corresponding operation family.

Output and idempotency

Both families print exactly one machine envelope by default:
--json restates the default and is a compatibility no-op. Pass --pretty alone for a human summary plus indented JSON; combining the two modes is a usage error. Every Reviewer Feedback mutation requires an explicit --key with 8–128 safe characters. Checklist push and publish can derive revision-bound keys; reversible settings, reorder, archive, and restore commands require an explicit key.

Review feedback across a job

Begin with the feature state, summary, and first report page:
Filter by status, subject, severity, reporter, report text, and time range:
The list response has a fixed server page size and a hasMore flag. Continue with --page 2, --page 3, and so on until hasMore is false. Status counts are authoritative for the subject-filtered set; use feedback summary for job-wide totals, unresolved counts, per-person aggregates, and unlinked legacy rows. Read one report before triaging it:
Use the exact updatedAtIso returned by the latest get. Terminal transitions and reopening require --note; a stale value returns 409 and requires another read and decision.

Discover subjects and submit employer feedback

The roster removes the need for a browser or database lookup:
It returns each canonical person once with all contracts they held. Submit the report body inline or from a file:
The canonical subject is required for an employer-authored report. --subject-contract-id is optional; when omitted, OpenTrain stores a deterministic contract reference. Use feedback link-subject only to reconcile a legacy unlinked row:

Manage reviewer access and the job switch

Reviewer grants are available only for people with active contracts on the job:
Bulk access changes are transactional. One ineligible grant target rejects the complete batch:
The per-job feature defaults off. Both directions require an acknowledgement and a durable key:
Disabling preserves reports, events, subject links, and grants.

Author a checklist from files

Create a local bundle directory and edit checklist.json:
The bundle contains a complete schemaVersion: 2 definition with title, required, and tree. Node IDs and option IDs are stable, caller-minted tokens. Use the API reference example for branching and repeat-group shapes. Validate before writing, then push the new definition atomically:
push creates a complete definition when no base snapshot exists. For an existing definition, check it out first:
The CLI keeps a private base snapshot and performs a three-way comparison across base, local bundle, and live remote draft. A conflicting edit fails closed instead of overwriting another employer’s work.

Resolve answers and visually review

Test branching, numeric constraints, required paths, and repeated blocks without storing answers:
Preview the exact synchronized revision in a browser:
Without --open, the response returns the short-lived previewUrl. The command refuses to preview a dirty local bundle—run push first so the rendered server snapshot is exactly the content you reviewed locally.

Publish, order, and enable

Publish after validation and browser review:
The response identifies the immutable version and content hash, change impact, open runs swept, and answers that workers must reconfirm. Multiple definitions can be published for one job. List and reorder the complete set with a compare-and-set precondition:
Enable the job only when every worker-visible definition is ready:
Disable requires --confirm; definitions, versions, and submissions remain stored:

Review checklist results

Filter submission rows across the job and fetch the complete version-pinned result:
The detail includes the exact submitted version’s title and tree, active answers, and inactive-path audit metadata. It never exposes raw hidden or orphaned answer values.