dbxcli
Use the local dbxcli executable as the only Dropbox integration. Do not
reimplement Dropbox API calls, scrape text help, or maintain a command catalog
in this skill. The CLI's JSON help manifest is authoritative for the installed
version.
Start safely
- Check availability with
command -v dbxcli, then run
dbxcli version --output=json. If it is unavailable, say so and give
installation guidance for the user's operating system, using the
dbxcli releases page. Do not
download or install it unless the user authorizes that action.
- Before a command you have not already discovered in the current task, run
dbxcli [command path] --help --output=json. Begin with
dbxcli --help --output=json when the command path is unknown.
- Read the manifest's
supports_structured_output, input_schema,
stdin_stdout, destructive_level, flags, and args. Do not infer a
command or flag from memory.
- Represent the intended arguments and flags as JSON-shaped input and validate
it against that command's
input_schema before building the shell command.
Map fields to command-line names using each field's x-cli-name.
Read tool-integration.md for the discovery,
validation, result, and error protocol. Read automation.md
for writes and confirmation behavior. Read safety.md
before handling credentials, transfers, deletion, replacement, or sharing.
Execution contract
For normal command execution, always pass --output=json and parse stdout as a
single JSON envelope. Treat stderr as diagnostics only. Check both the process
exit code and .ok:
- If
.ok is true, use documented results[].status, results[].kind, and
warnings; do not rely on prose or undocumented fields.
- If
.ok is false, branch on stable .error.code, not .error.message.
Surface a concise, redacted explanation and use structured .error.details
only when relevant. Do not blindly retry writes or auth errors.
- If the manifest says
supports_structured_output: false, do not run that
command as a machine-action. Explain the limitation or use a safe supported
alternative. JSON help itself remains available.
For destructive or externally visible actions, first discover the command and
validate inputs, then prefer --dry-run if the manifest exposes it. Use an
explicit --if-exists policy whenever it is available; never assume that a
default overwrite or conflict policy matches the user's intent. A successful
dry-run does not authorize execution; obtain explicit user confirmation before
the real destructive action. When a command exposes --yes, use it only after
that confirmation to prevent an interactive prompt from blocking automation.
Large listings, search, and multi-step work
The CLI follows Dropbox pagination internally; agents must not invent or pass
cursors. For a broad ls or search, discover the command and use its
--limit flag to bound the result delivered to the tool. Start with the
narrowest sensible folder or search path; do not recursively enumerate a whole
Dropbox when a scoped query will answer the request. A limited result is a
selection, not proof that no additional matches exist.
For search requests about text inside files, inspect the search manifest
and pass --content only when it is available and the user requested a
content search. Otherwise search is filename-oriented. Scope the search path
and limit whenever practical.
For a search → get → process task: discover and validate search, select the
exact result path from its JSON metadata, then discover and validate get.
Download to a named local file (never stdout), process that local file, and
report the output path or a concise result. A later upload, share-link, or
replacement is a separate externally visible action and needs its own
discovery, safety policy, and authorization.
Boundaries
- Never put tokens, auth codes, app secrets, environment dumps, or auth-file
contents in prompts, commands, logs, JSON fixtures, tool results, commits,
or artifacts. Refer to secret names and paths only when needed.
- Do not use
DBXCLI_ACCESS_TOKEN=value inline. Pass an already-provisioned
secret through the execution environment. Keep DBXCLI_AUTH_FILE outside
the repository and do not read, upload, or commit it.
- Never send binary file data through a tool result. For
get or
share-link download, download to a local file and report its path and
metadata. local operand - is a byte stream and cannot be combined with
JSON output.
- Do not use this skill to expose shared links, alter permissions, overwrite,
move, restore, or delete without user-authorized scope.
1---2name: dbxcli3description: Safely operate Dropbox through a locally installed dbxcli command, using its JSON manifest and schema-backed machine contract. Use for Dropbox file, shared-link, team, or account work; do not call the Dropbox API directly.4---56# dbxcli78Use the local `dbxcli` executable as the only Dropbox integration. Do not9reimplement Dropbox API calls, scrape text help, or maintain a command catalog10in this skill. The CLI's JSON help manifest is authoritative for the installed11version.1213## Start safely14151. Check availability with `command -v dbxcli`, then run16 `dbxcli version --output=json`. If it is unavailable, say so and give17 installation guidance for the user's operating system, using the18 [dbxcli releases](https://github.com/dropbox/dbxcli/releases) page. Do not19 download or install it unless the user authorizes that action.202. Before a command you have not already discovered in the current task, run21 `dbxcli [command path] --help --output=json`. Begin with22 `dbxcli --help --output=json` when the command path is unknown.233. Read the manifest's `supports_structured_output`, `input_schema`,24 `stdin_stdout`, `destructive_level`, `flags`, and `args`. Do not infer a25 command or flag from memory.264. Represent the intended arguments and flags as JSON-shaped input and validate27 it against that command's `input_schema` before building the shell command.28 Map fields to command-line names using each field's `x-cli-name`.2930Read [tool-integration.md](references/tool-integration.md) for the discovery,31validation, result, and error protocol. Read [automation.md](references/automation.md)32for writes and confirmation behavior. Read [safety.md](references/safety.md)33before handling credentials, transfers, deletion, replacement, or sharing.3435## Execution contract3637For normal command execution, always pass `--output=json` and parse stdout as a38single JSON envelope. Treat stderr as diagnostics only. Check both the process39exit code and `.ok`:4041- If `.ok` is `true`, use documented `results[].status`, `results[].kind`, and42 `warnings`; do not rely on prose or undocumented fields.43- If `.ok` is `false`, branch on stable `.error.code`, not `.error.message`.44 Surface a concise, redacted explanation and use structured `.error.details`45 only when relevant. Do not blindly retry writes or auth errors.46- If the manifest says `supports_structured_output: false`, do not run that47 command as a machine-action. Explain the limitation or use a safe supported48 alternative. JSON help itself remains available.4950For destructive or externally visible actions, first discover the command and51validate inputs, then prefer `--dry-run` if the manifest exposes it. Use an52explicit `--if-exists` policy whenever it is available; never assume that a53default overwrite or conflict policy matches the user's intent. A successful54dry-run does not authorize execution; obtain explicit user confirmation before55the real destructive action. When a command exposes `--yes`, use it only after56that confirmation to prevent an interactive prompt from blocking automation.5758## Large listings, search, and multi-step work5960The CLI follows Dropbox pagination internally; agents must not invent or pass61cursors. For a broad `ls` or `search`, discover the command and use its62`--limit` flag to bound the result delivered to the tool. Start with the63narrowest sensible folder or search path; do not recursively enumerate a whole64Dropbox when a scoped query will answer the request. A limited result is a65selection, not proof that no additional matches exist.6667For search requests about text *inside* files, inspect the `search` manifest68and pass `--content` only when it is available and the user requested a69content search. Otherwise search is filename-oriented. Scope the search path70and limit whenever practical.7172For a search → get → process task: discover and validate `search`, select the73exact result path from its JSON metadata, then discover and validate `get`.74Download to a named local file (never stdout), process that local file, and75report the output path or a concise result. A later upload, share-link, or76replacement is a separate externally visible action and needs its own77discovery, safety policy, and authorization.7879## Boundaries8081- Never put tokens, auth codes, app secrets, environment dumps, or auth-file82 contents in prompts, commands, logs, JSON fixtures, tool results, commits,83 or artifacts. Refer to secret names and paths only when needed.84- Do not use `DBXCLI_ACCESS_TOKEN=value` inline. Pass an already-provisioned85 secret through the execution environment. Keep `DBXCLI_AUTH_FILE` outside86 the repository and do not read, upload, or commit it.87- Never send binary file data through a tool result. For `get` or88 `share-link download`, download to a local file and report its path and89 metadata. `local operand -` is a byte stream and cannot be combined with90 JSON output.91- Do not use this skill to expose shared links, alter permissions, overwrite,92 move, restore, or delete without user-authorized scope.