This file describes how human contributors and coding agents should work in this repository.
- Keep first-party scripts reliable under repeated execution
- Favor modular scripts over the legacy monolithic launcher
- Improve safety without breaking common VPS workflows
- Leave the repository easier to review after every change
- Prefer editing the modular path (
vps.sh,lib/,scripts/,tests/) over expandingvps_scripts.sh - Do not replace user changes blindly; inspect before overwriting
- Avoid destructive commands unless the task explicitly requires them
- Treat root-level filesystem and package-manager operations as high risk
- Keep new files ASCII unless there is a strong reason to introduce other characters
- Quote variables unless unquoted expansion is required
- Avoid
evalunless there is no safer alternative - Prefer arrays over command strings for package-manager commands
- Prefer
mktempover predictable/tmpfilenames - Validate user input before using it in commands, paths, or service names
- When downloading first-party modules, download to a temp file and execute that file instead of process substitution
When optimizing a category or module, also review what it offers:
- Popular, actively maintained tools or projects that fit the category may be added (as first-party scripts or confirmed third-party entries)
- Outdated, unmaintained, or superseded entries may be moved lower in menus or marked as legacy instead of being removed outright
- Note additions and priority changes in
CHANGELOG.mdand the README feature list - The LDNMP installer stays a single combined installer; it is not split into focused installers
- First-party launcher actions should point only to files that exist in this repository
- Third-party remote commands should be clearly separated from first-party modules
- Interactive confirmation is preferred before executing third-party one-liners
- Document third-party dependencies in
PRIVACY.mdor the relevant script header
Run at least:
bash -n vps.sh
bash -n path/to/changed_script.sh
LAUNCHER_OVERRIDE="$PWD/vps.sh" REPO_ROOT_OVERRIDE="$PWD" bash tests/validate_launcher_paths.shIf available, also run:
shellcheck vps.sh path/to/changed_script.shUpdate the relevant docs when behavior changes:
README.mdfor user-visible workflow changesCHANGELOG.mdfor notable changesPROGRESS.mdandTASKS.mdfor roadmap changesRELEASE_CHECKLIST.mdwhen release process changes
When reviewing changes, focus on:
- Reliability
- Safety
- Idempotency
- Error handling
- Input validation
- Logging clarity
- Menu-to-script consistency
- Testability