Skip to content

Improve CLI UX: optional default expiration & clearer AIP-80 key warning #12

@rixa

Description

@rixa

Product

CLI

Problem to Solve

Overall experience using Shelby CLI is smooth and works well (init, upload, list blobs, download all successful).

Some UX/DX improvement suggestions:

  1. Make --expiration (-e) optional with a sensible default
    Currently upload fails if expiration is not provided.
    A default expiration (e.g. 7 or 30 days) would improve usability,
    especially for quick tests and first-time users.

  2. Improve AIP-80 private key warning clarity
    The warning appears on every command even when operations succeed.
    It might be clearer if:

  • The warning is shown only once during init, or
  • The CLI provides an automatic formatting option or flag.
  1. Better error message for placeholder usage
    When users copy commands like:
    shelby upload <FILE> <PATH>
    PowerShell errors can be confusing for beginners.
    A CLI-level hint could help.

Overall great DX, excited to keep testing Shelby 🚀

Proposed Solution

It would be helpful if the CLI provided a clearer default behavior and messaging around file expiration.

For example:

  • Allow uploads without explicitly passing -e by using a reasonable default expiration.
  • Improve the error message to clearly explain why -e is required and provide an example command.
  • Add a --no-expiration or --default-expiration flag for better UX.

Additionally, improving warnings around private key formatting (AIP-80) with a short actionable suggestion would help new users.

Alternatives Considered

Manually setting the expiration flag every time works, but it is easy to miss and interrupts the user flow.

Another alternative is documenting this behavior more prominently in the CLI help output or README, but improving the CLI defaults would provide a better developer experience.

Impact / Who Benefits

CLI users and developers who frequently upload/download files and want a smoother, less error-prone workflow.

Pre-checks

  • I've searched existing feature requests

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions