starship/starship
How to contribute
A practical map of how work flows from "I want to change something" to "this is in main." For the source-of-truth project policy, see CONTRIBUTING.md. This section condenses what's there and adds context for navigating the codebase.
Where to start
- Read
CONTRIBUTING.mdfirst. It is short and authoritative. - Look at issues labeled
🌱 good first issue. - Drop into the Discord for questions.
- For docs translations, do not edit the per-locale Markdown files directly — they're managed by Crowdin.
Sub-pages
| Topic | Page |
|---|---|
| Develop, test, and submit a PR | Development workflow |
Test patterns, ModuleRenderer, fixtures |
Testing |
Logs, STARSHIP_LOG, debugging hooks |
Debugging |
| Module shape, config conventions, error handling | Patterns and conventions |
| Cargo features, lints, formatters, CI | Tooling |
Definition of done
A PR is mergeable when:
cargo fmt --allpasses.cargo clippy --all-targets --all-features -- -D warningspasses.cargo test --all-features --locked --workspace -- --include-ignoredpasses on Linux, macOS, and Windows (CI runs all three).- If you changed any field of any config struct,
.github/config-schema.jsonis up to date (regenerate withcargo run --features config-schema -- config-schema > .github/config-schema.json). - If you added a new module, the New Module Checklist in
CONTRIBUTING.mdis complete. dprint fmthas been run if you touched Markdown / TOML / JSON / YAML.
Pull-request flow
- Fork the repo.
git checkout -b my-featureoffmain.- Commit (use Conventional Commits —
release-pleasereads them for the changelog). - Push and open a PR against
starship:main. - CI runs the full matrix; review happens when a maintainer is around.
- PRs are typically squash-merged.
There's no expectation to assign reviewers; maintainers triage incoming PRs.
What kind of contribution?
| Kind | Where |
|---|---|
| Add a new module | New .rs files under src/modules/ and src/configs/, plus the seven-place wire-up in CONTRIBUTING.md's checklist |
| Fix a module bug | Edit the relevant src/modules/<name>.rs, add a test |
| Add a new shell | New Shell variant, new src/init/starship.<shell> |
| Add a preset | New .toml under docs/public/presets/toml/ |
| Update docs (English) | Edit docs/config/README.md, docs/guide/README.md, etc. |
| Update docs (other languages) | Use Crowdin |
| Tweak CI | .github/workflows/*.yml |
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.