Use this skill to run the `magnit` CLI in fully non-interactive mode for authentication, logging, and verification. Trigger when an agent must log work hours deterministically via command flags (not natural language), avoid prompts, emit JSON for automation, or operate in CI/headless execution.
Resources
1Install
npx skillscat add ihildy/magnit-vms-cli/magnit-vms-cli-non-interactive Install via the SkillsCat registry.
SKILL.md
Magnit VMS CLI Non-Interactive
Overview
Execute magnit commands with explicit flags so the run is deterministic, scriptable, and prompt-free.
Prefer --json, --yes, --engagement, and --password-stdin where needed to avoid interactive input.
Non-Interactive Workflow
- Resolve executable:
- Prefer
./magnitif present in the repo root. - If missing, run
go build ./cmd/magnitfirst.
- Authenticate non-interactively:
- Run
./magnit auth login --username <email> --password '<password>'. - Alternative for complex passwords:
printf '%s' '<password>' | ./magnit auth login --username <email> --password-stdin.
- Verify authentication:
- Run
./magnit auth status --json. - Proceed only when
"authenticated": true.
- Configure defaults (optional but recommended):
- Set engagement once:
./magnit config set-default-engagement --id <engagement_id>. - Set timezone once:
./magnit config set-timezone --tz <IANA_TZ>.
- Run logging operations:
- Set day spans (authoritative replace):
./magnit set --date YYYY-MM-DD --span labor:09:00-12:00 --span lunch:12:00-12:30 --span labor:12:30-17:00 --engagement <id> --yes --json - Mark did-not-work day:
./magnit mark-dnw --date YYYY-MM-DD --engagement <id> --yes --json - Read back day state:
./magnit show --date YYYY-MM-DD --engagement <id> --json
- Use dry-run before write when safety is required:
./magnit set ... --dry-run --json./magnit mark-dnw ... --dry-run --json
Command Patterns
Authentication:
./magnit auth login --username "$MAGNIT_USERNAME" --password "$MAGNIT_PASSWORD"
or
printf '%s' "$MAGNIT_PASSWORD" | ./magnit auth login --username "$MAGNIT_USERNAME" --password-stdin
./magnit auth status --jsonSet hours for one day:
./magnit set \
--date 2026-02-18 \
--span labor:09:00-12:00 \
--span lunch:12:00-12:30 \
--span labor:12:30-17:00 \
--engagement "$MAGNIT_ENGAGEMENT_ID" \
--yes \
--jsonMark day as did-not-work:
./magnit mark-dnw --date 2026-02-19 --engagement "$MAGNIT_ENGAGEMENT_ID" --yes --jsonVerify day:
./magnit show --date 2026-02-18 --engagement "$MAGNIT_ENGAGEMENT_ID" --jsonReliability Rules
- Always pass
--jsonfor machine-readable output. - Always pass
--yesfor non-interactive writes to bypass confirmation prompts. - Always pass
--engagement <id>unless a default engagement is already configured. - Always use
YYYY-MM-DDdates andtype:HH:MM-HH:MMspans. - Treat non-zero exit status as failure.
- Prefer
--password-stdinfor passwords with shell-sensitive characters and to reduce shell-history/process-list exposure:printf '%s' "$MAGNIT_PASSWORD" | ./magnit auth login --username "$MAGNIT_USERNAME" --password-stdin.
Failure Handling
- If auth fails (
authenticated: false), runauth loginagain; for complex passwords prefer--password-stdinover--password. - If a command errors on engagement resolution, pass
--engagement <id>or configure a default. - If span validation fails, fix overlaps/order/format and rerun.
- If uncertain about payload impact, rerun with
--dry-run --json.