About boxyard-cli
A skill for operating Boxyard, which manages folders containing data, metadata, sync settings, groups, and local or rclone storage. It emphasizes explicit approval before state changes and provides guidance for discovery, synchronization, ownership, and recovery.
Key features
- 01Discover and inspect managed boxes
- 02Create and organize boxes and groups
- 03Manage synchronization and storage
- 04Check ownership and system health
- 05Follow safeguards for destructive changes
Use cases
- 01Finding a box or its managed paths
- 02Synchronizing box data after approval
- 03Checking inconsistent state with doctor
- 04Reviewing ownership before changing box data
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ lukastk/ boxyard --skill boxyard-cliAfter installing, type/boxyard-cliin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/box-lifecycle.mddiscovery-and-paths.mdownership-and-health.mdshell-helper.mdsync-and-storage.mdDetails
From the project READMEBoxyard CLI
Use this skill to use, not develop, Boxyard: managed folders with DATA, metadata, sync config, groups, and local/rclone storage. All bundled paths below resolve from this skill directory; no source checkout is required.
Authority and safety
- Ask before modifying local or remote state. This includes
init,new,sync,multi-sync,sync-missing-meta,include,exclude,relocate,delete,rename,sync-name, group/parent edits,create-user-symlinks,copy,force-push,claim,release,discard-local, and non-dry-runconvert. Examples are not authorization. Read-only queries,--help,doctor, andconvert --dry-runmay run without confirmation. - Never create ad-hoc folders/clones/worktrees in
~/dev. Find the existing box or useboxyard newwith approval; put non-box scratch outside managed roots. Keep generated data, even large outputs, inside its related box. Use sync excludes, not sibling folders, to avoid uploading it. - Resolve identity and placement, don't guess. Both timestamp format and subid
length are configurable;
index_nameis{box_id}__{name}. Usewhich/path: DATA may be in any checkout root, not justuser_boxes_path(default). An unavailable root never falls back to default. Placement is machine-local, never synced inboxmeta.toml; remote storage and local placement are independent. - Resolve ownership, never bypass it. DATA/CONF pushes compare
write_ownerwith configuredmachine_name, never a hostname. No owner means unrestricted.newclaims by default (--no-claimfor work elsewhere);include --read-onlysuppresses the claim nudge. Refusal also protectsforce-push, remote/both rename, and deletion. With approval,claim --stealkeeps this machine's work;discard-localreplaces it from remote and keeps overwritten work in backups. - Destructive traps:
new --from PATHMOVES unless--copy;excludesyncs first then removes local DATA (--skip-syncskips that protection).deletetombstones the id fleet-wide: never delete a stale duplicate name to clean registrations.sync --sync-setting replace|force,copy --overwrite, andforce-push --forcecan overwrite data. Read the relevant reference first. - Backups aren't garbage: orphan findings may be intentional
discard-localkeepsakes. Never auto-delete them or infer disposability from unclaimed ULIDs. - Excludes replace, not extend. A box's
conf/.rclone_excludereplaces the default list entirely: copy the default contents before adding rules, or risk syncing.venv/,node_modules/, etc..rclone_includeand.rclone_filtersare currently refused; use.rclone_excludealone. CONF syncs before DATA. Default-exclude edits invalidate DATA baselines fleet-wide; batch needed edits. - Conversion is explicit: policy edits never reformat existing boxes; only
convertdoes, verifying a byte-identical restore before removing the old copy. Read the storage reference and~/.config/myagent/reference/box-storage.mdbefore recommending/changing plain vs restic. Rig default is plain; package default for rclone is restic (local is plain). Every participating machine needs Boxyard >=0.7.0, restic and the password before using restic boxes.
Discover, select, inspect
Use the installed CLI as authority: boxyard --help, boxyard <command> --help,
boxyard --version. When already operating from a Boxyard development checkout,
prefer uv run boxyard ...; do not navigate relative to the installed skill to
find source. For non-default config use boxyard --config /path/to/config.toml ....
BOXYARD_CONFIG_PATH is for the shell helper, not a substitute for CLI --config.
boxyard which --path /some/path --json
boxyard list --output-format json
boxyard list --show-status --show-checkout
boxyard list --group-filter 'work AND NOT archived'
boxyard checkout-roots
boxyard path --box INDEX_NAME
boxyard path --box INDEX_NAME --path-option conf
boxyard box-status --box INDEX_NAME
boxyard owner --box INDEX_NAME
boxyard yard-status
boxyard doctor --no-remote
pathdefaults to included DATA;--allincludes excluded candidates. Use itsroot,meta,conf, orsync-record-*options for non-DATA locations.- Select explicitly with
--box INDEX_NAMEor--box-id BOX_ID;--box-name NAMEoften means contains matching.--pick-firstonpathis only for acceptable ambiguity. Bare selection uses the cwd box across configured roots, then an fzf picker;delete,rename,copy,force-push, andsync-namerequire an explicit selector. - Run
doctorwhen state looks inconsistent, rather than improvising repairs. It is read-only (exit 0 healthy / 1 findings); default includes remote checks,--no-remoteis offline. Follow hints only after approval for state changes.
Common operations (after approval)
boxyard new --box-name NAME
boxyard new --from /path/to/folder --copy
boxyard include --box INDEX_NAME --checkout-root ROOT
boxyard sync --box INDEX_NAME --sync-setting careful
boxyard exclude --box INDEX_NAME
boxyard add-to-group --box INDEX_NAME GROUP
sync can select META/CONF/DATA, direction, and descendants. multi-sync supports
cadence and skip proofs; proof must cover all requested parts and dependencies,
including plain DATA. Unknown/unproven boxes still run the real sync path.
For relocation, destructive recovery, conversion, or bulk operations, read the
matching reference and command help before acting.
Task-to-reference map (load only what is needed)
| Task | Bundled reference |
|---|---|
| Config keys, local/remote layouts, roots, selectors, filters, canonical discovery | Discovery and paths |
| New/include/exclude/copy, relocation, groups/hierarchy, rename/delete/force | Box lifecycle |
| Sync modes, multi-sync proofs, cadence, plain/restic conversion, excludes | Sync and storage |
| Owner/claim/release/discard-local and doctor findings/recovery hints | Ownership and health |
| Ctrl+G, fzf, helper search and zsh setup | Shell helper |
Package-default paths are not rig paths: read the actual config (normally
~/.config/boxyard/config.toml) and use path. References preserve detailed
examples and rationale; historical counts are not a current fleet inventory.