This repository provides reusable GitHub Actions under:
/.github/actions/base/.github/actions/composed
Base actions are granular, single-purpose building blocks. They are intended to
be called explicitly in your workflow steps after base/checkout, so you can
compose only the checks your repository needs in a single job.
Path: /.github/actions/base/checkout
ref(required): ref/commit to checkout fromholdex/github-actions.
- Checks out
holdex/github-actionsinto.holdex-actions. - Intended as the first step before calling local-path actions from that checkout.
Warning
Keep base/checkout backward compatible. Workflows reference the action as .../base/checkout@main, so any breaking change merged to this repo’s main will immediately break consumers.
This also applies to the ref input: existing workflows often pass ref: main (a branch name) for the target repo checkout, so don’t change ref semantics in a way that would require a commit SHA.
Path: /.github/actions/base/setup-runtime
package-manager(default:"bun"):bun,pnpm, ornpm.
- Validates allowed
package-managervalues. - For
bun: installs Bun runtime. - For
pnpm/npm: installs Node.js. - For
pnpm: installs pnpm usingpackage.json#packageManagerwhen present, otherwise falls back tolatest. - Respects
HOLDEX_WORKING_DIRenv var forpackage.jsondetection when set.
Path: /.github/actions/base/prettier
changed-files(default:""): optional pre-resolved changed files list.package-manager(default:"bun"):bun,pnpm, ornpm.
- Discovers changed files itself if
changed-filesis not provided. - Skips execution if no changed files exist.
- Installs Prettier globally using selected package manager.
- Verifies a resolvable Prettier config exists.
- Runs dependency install in repo context when
package.jsonexists:bun i --frozen-lockfile,pnpm install --frozen-lockfile, ornpm ci.
- Runs
prettier --check --ignore-unknownon changed files. - Respects
HOLDEX_WORKING_DIRenv var: all steps run in that directory when set.
Path: /.github/actions/base/markdown-check
changed-files(default:""): optional pre-resolved changed files list.package-manager(default:"bun"):bun,pnpm, ornpm.
- Discovers changed markdown files (
.md,.mdx) ifchanged-filesis not provided. - Filters/uses markdown-only changed files.
- Skips execution if no markdown files changed.
- Installs
rumdlglobally using selected package manager. - Runs
rumdl check --output-format github --fail-on erroron changed markdown files. - Respects
HOLDEX_WORKING_DIRenv var: all steps run in that directory when set.
Path: /.github/actions/base/commit-check
package-manager(default:"bun"):bun,pnpm, ornpm.
- Runs only on
pull_requestevents for install/config/check steps. - Installs commitlint CLI globally using selected package manager.
- Detects commitlint configuration from standard config files or
package.json. - If config exists, installs dependencies in repo context:
bun i --frozen-lockfile,pnpm install --frozen-lockfile, ornpm ci.
- If config does not exist, installs
@commitlint/config-conventionaland creates fallback.commitlintrc.yml. - Validates PR title via
commitlint. - Respects
HOLDEX_WORKING_DIRenv var: all steps run in that directory when set.
Composed actions orchestrate multiple base actions into a single, higher-level
check. They are intended to run after base/checkout (so .holdex-actions is
present) and typically assume base/setup-runtime has already been called.
Path: /.github/actions/composed/pr-checks
run-prettier(default:"true"): enable prettier check.run-markdown(default:"true"): enable markdown check.run-commits(default:"true"): enable commit check.package-manager(default:"bun"):bun,pnpm, ornpm.working-directory(default:"."): working directory to run all checks in.
- Discovers changed files once when needed (prettier/markdown enabled).
- Runs selected base actions:
base/prettierbase/markdown-checkbase/commit-check
- Assumes
base/setup-runtimehas already been called by the client. - Sets
HOLDEX_WORKING_DIRenv var fromworking-directoryinput (falls back to existing env var if already set by the calling workflow).
All base actions and the composed/pr-checks action support running in a
subdirectory via the HOLDEX_WORKING_DIR environment variable.
This is useful for monorepos where checks should be scoped to a specific
package.
The env var is set automatically when using the pr-checks.yml reusable
workflow with the working-directory input, or when using
composed/pr-checks directly with the working-directory input.
Base actions read it implicitly — they require no additional inputs.
jobs:
checks:
uses: holdex/github-actions/.github/workflows/pr-checks.yml@main
with:
working-directory: ./packages/my-package- name: Run PR checks
uses: ./.holdex-actions/.github/actions/composed/pr-checks
with:
working-directory: ./packages/my-package