Thank you for improving this project.
For coding and documentation standards, see STANDARDS.md. This repository inherits Base's shell-library standards, including the convention that each sourceable shell library remains a single file at its library boundary.
For release work, read docs/release-process.md. The
repository release contract is declared in base_manifest.yaml; ordinary pull
requests leave VERSION unchanged. The active release line is documented in
docs/versioning-policy.md, and every release
operation must enter through the repository-owned scripts/release guard.
-
Create or choose a GitHub issue for roadmap or multi-step work. A small, self-contained fix may be submitted directly from a public fork.
-
Use one of the standard issue labels:
bug,enhancement,documentation,ci, orsecurity. -
For tracked work, create an issue-backed branch:
<category>/<issue>-<YYYYMMDD>-<slug> -
Use a dedicated Git worktree for each pull request so the main checkout can stay on the default branch:
git fetch origin git worktree add -b <branch> ../base-bash-libs-worktrees/<slug> origin/<default-branch>
-
Keep the pull request scoped to the issue when one exists and link it with
Fixes #<issue>orCloses #<issue>when merge should close the issue. -
Run the project checks before opening or updating a pull request.
-
Update
CHANGELOG.mdonly for notable user-visible or release-worthy changes. -
After merge, sync the default branch, remove the worktree, and delete merged local and remote branches when safe:
git pull --ff-only origin <default-branch> git worktree remove ../base-bash-libs-worktrees/<slug> git branch -d <branch> git push origin --delete <branch>
Useful commands:
./tests/validate.sh
tests/lint-warnings.sh
basectl check base-bash-libs
basectl doctor base-bash-libs
basectl test base-bash-libsThe Project Intake workflow uses the BASE_PROJECT_TOKEN repository secret
to write to the organization Project. If issues are missing from the Project,
check GraphQL quota before starting a backfill:
gh api graphql -f query='query { rateLimit { remaining resetAt } }'Dispatch missed issues slowly so Project field mutations do not exhaust the GraphQL quota:
for issue in <issue-numbers>; do
gh workflow run project-intake.yml --repo basefoundry/base-bash-libs -f issue_number="$issue"
sleep 12
done