#Usage
maleta initmaleta init --file ./configs/maleta.jsonThe default file is maleta.json, resolved relative to the current directory. Use --file <path> to specify another path. The --tool flag is not accepted by init.
#CLI help
maleta - local Maleta selection CLI
Usage:
maleta init [--file path]
maleta validate [--file path]
maleta install [--file path] [--tool all|claude|codex|agents] [--dry-run]
maleta sync [--file path] [--tool all|claude|codex|agents] [--dry-run]
maleta lock [--file path] [--dry-run]
maleta tray
maleta --version
Device commands (optional account):
maleta login [--name label] authorize this computer (code at app.maleta.dev/device)
maleta logout revoke the credential and stop following the Maleta
maleta attach <maleta> follow one of your account's Maletas on this computer
maleta detach stop following the bound Maleta
maleta status show what this computer follows and what is pending
maleta watch [--interval seconds] [--once]
apply changes from the bound Maleta (never removes anything)
maleta prune [--dry-run] [--yes] remove only the files this Maleta wrote and no longer needs
maleta tray starts the maleta.dev tray icon in the background. It checks npm at startup and every 24 hours, then restarts after a verified update.
The file targetTool is used when --tool is omitted. targetOs must match the local host.
maleta lock pins every GitHub skill to the commit its ref (or default branch) points at today, so later installs get the same files.
GitHub skills are resolved from the declared public repository/path/ref without executing repository content.
#The created manifest
The command creates a document with schemaVersion: 1, a UUID in id, slug: "my-maleta", name: "My Maleta", matching ISO dates in createdAt and updatedAt, empty skills and plugins lists, targetTool: "all", and targetOs matching the host. The JSON uses two-space indentation and ends with a newline.
{
"schemaVersion": 1,
"id": "<UUID>",
"slug": "my-maleta",
"name": "My Maleta",
"createdAt": "<agora em ISO>",
"updatedAt": "<agora em ISO>",
"skills": [],
"plugins": [],
"targetTool": "all",
"targetOs": "<windows ou unix>"
}#Output and codes
On success, the first line is created: <caminho>, followed by these seven summary lines and a next-step instruction:
valid: <caminho absoluto>
name: My Maleta
schema: 1
skills: 0
plugins: 0
targetTool: all
targetOs: <windows ou unix>
Next: add skills/plugins to <caminho absoluto> or export a Maleta from https://app.maleta.dev before running install.- If the file already exists, the command does not overwrite it:
[error] refusing to overwrite existing file: <path>. The exit code is 3. - If the parent directory does not exist it prints
[error] parent directory does not exist: <dir>; a permission failure prints[error] permission denied while creating <path>; any other failure prints[error] could not create <path>: <msg>. All three exit with code 1. - The write is atomic: the document goes to a private temporary file and is hard-linked into place, so a failed run leaves no partial or empty file behind and
initcan simply be retried. - Help, with no arguments or with
--help/-h, exits with code 0.
#After creating it
Edit the selection in maleta.json and run maleta validate before applying it with maleta install.