Contributing to Botstrap
Thank you for helping improve Botstrap. This project aims to stay transparent (shell-first), registry-driven, and safe for non-interactive use.
Before you start
- Read
docs/INTRODUCTION.mdanddocs/ARCHITECTURE.mdfor the overall flow. - Read
docs/REGISTRY_SPEC.mdbefore editingregistry/core.yamlorregistry/optional.yaml. - See
docs/REFERENCE.mdfor CLI and environment variable naming when changing phases. - Prefer YAML registry changes over new orchestration logic when a tool installs cleanly from package managers.
Development setup
Clone the repository (or use your fork).
On Unix, run phases manually from the repo root for testing:
bashexport BOTSTRAP_ROOT="$(pwd)" # Optional: dry-run or step through install/phase-0-prerequisites.sh etc.Ensure bash 4+; git and curl are required for many tests but Phase 0 can install them on supported macOS/Linux. yq is required once Phase 1 has run or if you test
lib/pkg.shagainst the registry.
Adding a tool
Core (always installed)
- Add an entry to
registry/core.yamlwithname,description,category,installkeys per OS, andverify. - If install cannot be expressed safely in YAML, add
install/modules/<name>.sh(and.ps1on Windows) and call it from the phase script or frompost_install. - Update
docs/TOOL_SELECTION.mdwith a one-line rationale.
Optional (TUI)
- Add an item under the appropriate
groupsentry inregistry/optional.yaml. - Set
requiresif the tool needs Node, Docker, etc. - Extend
install/phase-2-tui.shif you introduce a new group (id); document the environment variable naming in this file’s header comment and updatedocs/REFERENCE.md.
Style
- English for all user-facing strings, comments, and docs.
- Shell:
set -euo pipefailat the top of bash scripts; quote variables; avoidevalof untrusted remote content. - Keep scripts idempotent where reasonable so re-runs and updates do not break machines.
Windows
- Mirror critical logic in
*.ps1where Unix uses*.sh. - Test with PowerShell 7+ when possible; note if Windows PowerShell 5.1 differs.
Pull requests
- Describe what changed and why (motivation, tradeoffs).
- Link related issues if any.
- If you change install behavior, mention platforms you tested.
Code of conduct
Be respectful and assume good intent. Report problems maintainers should know about via issues (or your project’s preferred channel).