Skip to content

Latest commit

 

History

History
79 lines (62 loc) · 2.59 KB

File metadata and controls

79 lines (62 loc) · 2.59 KB

Contributing to base-bash-libs

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.

Workflow

  1. 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.

  2. Use one of the standard issue labels: bug, enhancement, documentation, ci, or security.

  3. For tracked work, create an issue-backed branch:

    <category>/<issue>-<YYYYMMDD>-<slug>
    
  4. 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>
  5. Keep the pull request scoped to the issue when one exists and link it with Fixes #<issue> or Closes #<issue> when merge should close the issue.

  6. Run the project checks before opening or updating a pull request.

  7. Update CHANGELOG.md only for notable user-visible or release-worthy changes.

  8. 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-libs

Project intake backfill

The 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