shipit
CLI Toolshipit — Product Requirements Document
1. Problem Statement
Small teams deploy with ad-hoc shell scripts that differ per machine and break silently. shipit is a single, predictable command-line tool that runs a project's deploy steps the same way everywhere, with clear output and safe rollbacks.
2. Product Vision
A deploy CLI that "just works" from a tiny config file — readable output, sensible defaults, and zero servers to run. Built for Python projects first, language-agnostic later.
3. Goals & Success Metrics
- Time-to-first-deploy: a new user deploys a sample app in under 5 minutes.
- Reliability: failed deploys roll back automatically; non-zero exit code on any error.
- Adoption: 1,000 installs via
pip/pipxin the first quarter.
4. Command Structure
shipit init— scaffold ashipit.tomlconfig.shipit deploy [--env staging|prod] [--dry-run]— run the deploy pipeline.shipit rollback [--to <release>]— revert to a previous release.shipit status— show the current release and history.
5. Functional Requirements
- Read steps from
shipit.toml; support env-specific overrides. - Stream step output live; stop on first failure.
--dry-runprints the plan without executing.- Secrets read from environment variables, never stored in config.
6. Non-Functional Requirements
- Cross-platform (macOS, Linux); clear, colorized output that degrades gracefully when piped.
- Helpful
--helpfor every command; meaningful exit codes. - No telemetry without explicit opt-in.
7. Configuration (shipit.toml)
| Key | Purpose |
|---|---|
| app.name | project identifier |
| steps | ordered list of shell/build/deploy steps |
| env.* | per-environment overrides |
| hooks | pre/post-deploy commands |
8. Distribution
- Published to PyPI; installable via
pip install shipitorpipx install shipit. - Semantic versioning; changelog per release.
9. Milestones
- Phase 1 (2 wks):
init+deploywith live output and--dry-run. - Phase 2 (1 wk):
rollback+statuswith release history. - Phase 3 (1 wk): PyPI packaging, docs, and
--helppolish.
10. Risks & Open Questions
- Step failures mid-deploy must leave the system in a known state.
- Open: should config be TOML only, or also support YAML for teams that prefer it?
Want a PRD like this for your idea?
Answer a few questions in a short AI interview and get a structured, AI-ready PRD.md in minutes.
Start your first PRD →