Command-line tools for creating, validating, editing, storing, inspecting, and exporting SigmaLifting training data.
This CLI is intentionally isolated from the app runtime. It operates on JSON bundle contracts, not on Realm, Expo APIs, or app services.
Companion agent skill:
Plain text is fine for explaining a training plan. It starts to fail when the plan needs to be used. If you run a program for a few weeks, your actual weights, reps, RPEs, missed sets, notes, and adjustments are now mixed with the original prescription. Sharing that as text means somebody else has to manually clean out your history before they can put in their own numbers.
SigmaLifting keeps those two things separate: a program is the reusable template, and a process is one lifter's run of that program. The CLI exists so agents and tools can create, validate, edit, store, and export that structure without turning it back into a wall of prose. Use text to explain the program; use SigmaLifting JSON to run it, share it cleanly, and let each lifter fill in their own training data.
The schema also gives agents a better way to think about training structure. Instead of flattening everything into free-form text, the CLI forces concrete decisions: what is the reusable program, what is one lifter's process, where blocks start and end, which days exist, how exercises are grouped, and what values are prescribed versus recorded. Ambiguity becomes visible instead of being hidden inside prose.
- Program bundle creation, validation, normalization, and mutation.
- Process bundle creation from a program bundle, validation, normalization, and mutation.
- XLSX import into normalized
program-importandprocess-importbundles. - XLSX export from
program-importandprocess-importbundles. - A self-contained RPE calculator surface.
- Machine-readable JSON output for all commands, including
helpanddoctor. - File input and output from local paths,
file://URLs, and stdin where applicable. - A local JSON store that keeps stored process bundles aligned with stored program changes.
- Local validation and business-logic checks included under
lib/validation. - Strict
validateresults; usenormalizeexplicitly when accepting CLI cleanup.
The CLI follows these rules:
- Everything runtime-critical lives inside this package export.
- The CLI only knows about SigmaLifting JSON contracts.
- The CLI must be runnable in plain Node.
- The CLI must not depend on Realm or app storage choices.
- Store cascades are limited to CLI-managed JSON files, never live app databases.
- When developed inside an app repository, app builds should ignore this tool.
This means the CLI is best thought of as a bundle tool, not an app admin tool.
- Main command surface:
index.js - Executable wrapper:
bin/sigmalifting-cli.js - Bundle operations:
lib/bundleOps.js - Validation layer:
lib/validation/shared.js - RPE layer:
lib/rpe.js
Top-level commands:
helpdoctortemplatevalidatenormalizeprogramprocessrpeschemainspectrenderxlsxstore
Program commands:
listshowcreatecopyupdateadd-blockupdate-blockdelete-blockadd-dayrename-daydelete-dayupdate-scheduleadd-exerciseupdate-exerciseset-anchorset-deloadadd-set-groupdelete-set-groupset-variable-parameterset-week-valuetoggle-backoffset-backoff-sourceset-backoff-typetoggle-fatigue-dropset-fatigue-drop-typeset-weight-modeldelete-exercisemove-exercisecopy-exercisecopy-blockcopy-dayadd-custom-liftrename-custom-liftdelete-custom-lift
Process commands:
listshowcreate-from-programupdateupdate-configupdate-one-rmset-one-rmupdate-config-and-one-rmupdate-setupdate-noteget-recording
RPE commands:
charte1rmtraining-weightrange
Schema commands:
listshow
Inspect commands:
program-overviewprocess-overviewexercise-detailrecording-detailone-rm-profile
Render commands:
program-overviewprocess-overviewexercise-detailrecording-detailone-rm-profile
XLSX commands:
importexport
Store commands:
pathinit
Install from GitHub:
npm install -g https://github.com/sigmalifting/cli.git
sigmalifting-cli doctor --compact
sigmalifting-cli help --compactRe-run the same install command to update. For a pinned install, append a commit SHA:
npm install -g https://github.com/sigmalifting/cli.git#<commit-sha>Run from a package checkout:
npm run smoke
node ./bin/sigmalifting-cli.js help
node ./bin/sigmalifting-cli.js store path
node ./bin/sigmalifting-cli.js template program-import --out ./program.json
node ./bin/sigmalifting-cli.js validate program-import --file ./program.json
node ./bin/sigmalifting-cli.js xlsx import --file ./program.xlsx --out ./program-import.json
node ./bin/sigmalifting-cli.js xlsx export --file ./process-import.json --out ./process.xlsxRun directly:
node ./bin/sigmalifting-cli.js help --compact
node ./bin/sigmalifting-cli.js template process-import --compactInstall from a package checkout:
npm install -g .
sigmalifting-cli doctor --compactThe CLI package is Apache-2.0 licensed and distributed from GitHub.
For coding agents, point the agent at the installed executable or call it by absolute path:
which sigmalifting-cli
sigmalifting-cli validate program-import --file ./program.json --compact
/absolute/path/to/sigmalifting-cli render program-overview --file ./program.json --rawInput and output rules:
--fileaccepts a local path,file://URL, or-for stdin.--dataaccepts inline JSON.--data-fileaccepts a local path orfile://URL.--outaccepts a local path orfile://URL.--exercise-idselects an exercise for detail renders and process recording commands.--compactswitches stdout to single-line JSON.--rawprints direct text forrender.--store-rootoverrides the local JSON store root for one invocation.xlsx importrequires a local workbook path orfile://URL.xlsx exportwrites a workbook to--out.
All command responses are JSON objects with ok: true or ok: false.
Program and process bundles are stored as local JSON by default whenever a command returns a program-import or process-import bundle. JSON is the source of truth for the CLI. XLSX files are import/export artifacts, not core storage.
Default storage root:
- macOS:
~/Library/Application Support/SigmaLifting/cli - Linux:
${XDG_DATA_HOME:-~/.local/share}/sigmalifting/cli - Windows:
%APPDATA%\SigmaLifting\cli
Set SIGMALIFTING_HOME to override the root persistently, or pass --store-root <dir> for a single invocation.
Storage layout:
SigmaLifting/cli/
programs/
candito-6-week__prog_abc123.json
processes/
april-meet-prep__proc_xyz789.json
exports/
index.json
Programs and processes are separate because that matches the app model. A process references one program snapshot, while a program can exist with zero, one, or many processes. Filenames combine a human-readable slug with the stable entity id, so duplicate names remain safe.
Common stored workflows:
sigmalifting-cli store init
sigmalifting-cli program create --name "Candito 6 Week"
sigmalifting-cli program list
sigmalifting-cli program show --program-id prog_abc123
sigmalifting-cli process create-from-program \
--program-id prog_abc123 \
--name "April Meet Prep" \
--start-date 2026-04-27
sigmalifting-cli process list
sigmalifting-cli process update-set \
--process-id proc_xyz789 \
--exercise-id ex_abc123 \
--week-index 0 \
--set-index 0 \
--data '{"weight":140,"reps":5,"rpe":8,"completed":true}'File-based workflows still work. If --out is supplied, the CLI writes that file in addition to saving the bundle in the local JSON store.
The CLI currently works with these schema kinds:
program-importprocess-importprogramprocessexercise
The important distinction is:
programandprocessare bare model payloads.program-importandprocess-importare bundle payloads that include metadata and related arrays.
The CLI primarily operates on the import bundle forms because that is the cleanest database-agnostic interchange format.
The runtime is split into three layers.
- CLI parsing and I/O in
index.js - Pure bundle manipulation in
lib/bundleOps.js - Pure validation and math helpers in
lib/validation/shared.jsandlib/rpe.js
That separation is intentional:
index.jsshould stay thin.bundleOps.jsis the actual product logic.- validation and RPE should remain independently testable.
The CLI includes the runtime pieces it needs:
- ID generation
- import size limits
- validation schemas
- business-logic validation
- RPE chart and calculations
That keeps the command-line surface portable and independent from mobile app storage.
npm run smoke
npm pack --dry-run --json
sigmalifting-cli help --compact
sigmalifting-cli doctor --compact