Summary
The ship CLI already supports targeting apps by slug via --app-slug and SHIP_APP_SLUG. A useful next step is to make the common publish flows even shorter by accepting a positional slug as shorthand.
Proposed UX
Support full publish with a positional slug:
ship <slug>
ship publish <slug>
Support partial/status/validation flows with a positional slug:
ship publish metadata <slug>
ship publish screenshots <slug>
ship publish app <slug>
ship publish status <slug>
ship publish validate <slug>
Preserve existing explicit targeting:
ship publish --app-id <uuid>
ship publish --app-slug <slug>
ship publish <slug> --platform ios
Why
- The public CLI already supports slug-based targeting, but the most common path is still fairly verbose.
- Positional slug syntax makes publish commands easier to remember and faster to type.
- It gives the CLI a cleaner “happy path” while keeping
--app-id and --app-slug available for explicit workflows.
Scope
- Add positional slug support to the root command for full publish.
- Add positional slug support to
publish and the publish-related subcommands.
- Keep
--app-id, --app-slug, and platform filtering working as they do today.
- Update help text and README examples to document the shorthand flows.
Acceptance Criteria
ship <slug> triggers a full publish for the matching app.
ship publish <slug> triggers a full publish for the matching app.
metadata, screenshots, app, status, and validate accept <slug> as an optional positional argument.
- Existing
--app-id and --app-slug flows continue to work.
- Platform selection still works with shorthand commands.
- The CLI returns clear validation errors when the user supplies conflicting identifiers.
- README and command examples reflect the new shorthand syntax.
Notes
- There is already a local prototype branch for this UX:
feature/slug-publish-shortcuts.
- The issue should describe the desired public behavior, not commit us to the exact prototype implementation.
Summary
The
shipCLI already supports targeting apps by slug via--app-slugandSHIP_APP_SLUG. A useful next step is to make the common publish flows even shorter by accepting a positional slug as shorthand.Proposed UX
Support full publish with a positional slug:
Support partial/status/validation flows with a positional slug:
Preserve existing explicit targeting:
Why
--app-idand--app-slugavailable for explicit workflows.Scope
publishand the publish-related subcommands.--app-id,--app-slug, and platform filtering working as they do today.Acceptance Criteria
ship <slug>triggers a full publish for the matching app.ship publish <slug>triggers a full publish for the matching app.metadata,screenshots,app,status, andvalidateaccept<slug>as an optional positional argument.--app-idand--app-slugflows continue to work.Notes
feature/slug-publish-shortcuts.