Reusable GitHub Actions workflows for the listee-dev organization — Bun, Biome, Bun test, and Changesets out of the box.
lint.yml: Run Biome (bun x biome ci .).test.yml: Run Bun test.typecheck.yml: Run TypeScript project references (fallback to--noEmit).release.yml: Changesets release (opens PR or publishes to npm vianpxand npm@latest).pinact.yml: Validate that reusable workflows reference full-length commit SHAs.
name: ci
on: [push, pull_request]
jobs:
lint: { uses: listee-dev/listee-ci/.github/workflows/lint.yml@v1 }
test: { uses: listee-dev/listee-ci/.github/workflows/test.yml@v1 }
typecheck: { uses: listee-dev/listee-ci/.github/workflows/typecheck.yml@v1 }
# Release via Changesets (requires npm token in caller repo)
release:
uses: listee-dev/listee-ci/.github/workflows/release.yml@v1
with:
environment: productionNotes
- Runners:
ubuntu-latestrecommended. External actions are pinned to full-length commit SHAs viapinactto mitigate tag rewrite attacks. - npm releases use Trusted Publishing (OIDC). Configure npm to trust
listee-dev/listee-libs’sci.yml(or the relevant caller) and ensure each published package has matchingrepositorymetadata. - The release workflow installs npm@latest in a user prefix and runs Changesets through
npx, so repositories must have@changesets/clilisted (e.g., via workspace dependencies). - The internal Bun setup is packaged as a composite action and referenced relatively for portability.
- Validate workflows with
act(Apple Silicon often needs amd64):act -j lint -W .github/workflows/lint.yml --container-architecture linux/amd64act -j test -W .github/workflows/test.yml --container-architecture linux/amd64act -j typecheck -W .github/workflows/typecheck.yml --container-architecture linux/amd64act -j pinact -W .github/workflows/pinact.yml --container-architecture linux/amd64
- Optional: copy
actrc.exampleto your system config to avoid repeating flags.
- In the consumer repo, add a changeset per meaningful change:
bunx changeset(select bump type and packages). - Commit the generated file under
.changeset/and open a PR. - After merge to the default branch, the
release.ymljob creates a “Version Packages” PR. - Merge that PR to publish to npm. Configure npm Trusted Publishing for the repository/environment instead of providing
NPM_TOKEN. - Local preview:
bunx changeset status. Manual flows:bunx changeset versionthenbunx changeset publish.
- Conventional Commits are encouraged (e.g.,
feat(lint): strengthen Biome CI). - PRs should include purpose, key changes, impact, and local verification steps.
- Static checks run on PRs via
actionlint.
MIT License — see LICENSE.