Skip to content

Getting Started

Welcome to the helpers4 GitHub Actions collection! Reusable actions for common development workflows.

GitHub Actions enables you to create custom workflows that run automatically on GitHub events. Workflows are made up of actions - reusable units of code that perform specific tasks.

ActionUse it withDescription
action-releasehelpers4/action-release@v0Release a TypeScript, Rust or mixed repository in one step
conventional-commitshelpers4/action/conventional-commits@v1Validate commit messages against the Conventional Commits specification
dispatch-with-fallbackhelpers4/action/dispatch-with-fallback@v1Dispatch a repository_dispatch event via a GitHub App token, with an optional fallback identity retried on failure
pr-status-commenthelpers4/action/pr-status-comment@v1Post or update a single sticky PR comment summarizing job statuses as a table
setup-pnpmhelpers4/action/setup-pnpm@v1Set up Node.js + pnpm, optionally installing dependencies

Note the two shapes of uses:: most actions are folders of the helpers4/action repository (helpers4/action/<name>@v1); an action published on the GitHub Marketplace has its own repository (helpers4/<name>@v0). See Two kinds of repository.

Add to your workflow file (.github/workflows/commit-check.yml):

name: Commit Validation
on: [pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: helpers4/action/conventional-commits@v1
- uses: helpers4/action/conventional-commits@v1
  with:
    # Allowed commit types (default: feat, fix, chore, etc.)
    types: 'feat,fix,chore,refactor'
    
    # Require scope (default: false)
    requireScope: false
    
    # Custom error message
    errorMessage: 'Please follow Conventional Commits format'
name: PR Validation

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  validate-commits:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Validate commit messages
        uses: helpers4/action/conventional-commits@v1
        with:
          types: 'feat,fix,chore,refactor,docs,style,test,perf'
          requireScope: false

      - name: Comment on PR if failed
        if: failure()
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: '❌ Commit messages must follow Conventional Commits format'
            })
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # Validate commits first
      - uses: helpers4/action/conventional-commits@v1
      
      # Then run build
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci && npm run build
on:
  workflow_dispatch:

permissions: {}

jobs:
  release:
    runs-on: ubuntu-latest
    environment: release
    permissions: { contents: write, id-token: write }
    steps:
      - uses: actions/checkout@v7
        with: { fetch-depth: 0, persist-credentials: false }
      - uses: actions/setup-node@v7
        with: { node-version: 24 }
      - uses: helpers4/action-release@v0
        with:
          app-id: ${{ vars.HELPERS4_BOT_ID }}
          app-key: ${{ secrets.HELPERS4_BOT_KEY }}

See action-release for the one-time setup (GitHub App, trusted publishers).

  • Pin to major: helpers4/action/conventional-commits@v1 (monorepo), helpers4/action-release@v0 (own repository)
  • Pin to a release: helpers4/action/conventional-commits@v1.2.3
  • Pin to a commit SHA for the strongest guarantee, and let Dependabot keep it current

Browse all helpers4 actions on GitHub Marketplace

LGPL-3.0 — See LICENSE for details.