๐Ÿš€ GitHub Actions Workflow Templates

July 9, 2026 ยท View on GitHub

Latest GitHub release. GitHub stars. GitHub forks. GitHub open issues.

Production-ready, security-hardened GitHub Actions workflow templates for common CI/CD, testing, security, and deployment tasks.

For end-users: Browse workflows in Actions โ†’ Explore in your GitHub repository, or see USAGE.md for detailed documentation on each workflow.

For reusable workflows: See Reusable Workflows for jobs.<job_id>.uses examples.

For composite actions: See Composite Actions for step-level reuse examples.

For maintainers: See Maintaining Workflow Templates before adding or changing templates.


๐Ÿ“‹ Available Workflows

All workflows include hardened runners, least-privilege permissions, concurrency control, and pinned action versions.

WorkflowPurposeTriggersLanguages
Node.js Test & CoverageMulti-OS tests + Codecov uploadPush, PR, merge_groupJavaScript, TypeScript
npm ReleasePublish to npm + create GitHub releaseGit tag, manual dispatchJavaScript, TypeScript
CodeQL AnalysisSecurity scanning (JS/TS + workflows)Push, PR, scheduleJavaScript, TypeScript, YAML
Auto-Label PRsAutomatic PR labeling by configPR eventsYAML
Mark Stale IssuesClose stale issues/PRs after inactivitySchedule, manualYAML
Gitleaks ScanDetect leaked secrets (with config support)Push, PR, scheduleYAML, Shell
Dependency ReviewScan PR dependencies + license checkPR, merge_groupMultiple languages
Dependabot Auto-MergeEnable auto-merge for selected Dependabot semver PRsPR, merge_groupMultiple languages
Trufflehog ScanAlt secret scanner (verified secrets only)Multiple eventsYAML, Shell
OpenSSF ScorecardSupply chain security auditMultiple eventsYAML
Deploy DocusaurusBuild & deploy docs to GitHub PagesPush (docs path), manualJavaScript, TypeScript, Markdown
Submit IndexNowNotify search engines of URL changesManual dispatchJavaScript, TypeScript, YAML
Git-Cliff Release Notes ValidationCheck published release notes match the tagRelease published/edited, manualYAML
Automatic Pull Request RebaseAllow trusted collaborators to request a pull request rebase from an issue commentSee templateYAML
Ps Secret Scanner Secret ScanScan a repository with the PowerShell PSSecretScanner moduleSee templatePowerShell, YAML
Ai Issue And Pull Request SummarySummarize newly opened or edited issues and pull requests with GitHub ModelsSee templateYAML
First Interaction GreetingWelcome first-time issue and pull request authorsSee templateYAML
Clean Old GitHub ReleasesDelete older GitHub releases and optionally their matching tagsSee templateYAML
Node Dependency ValidationInstall dependencies, run a validation command, and upload diagnostics on failureSee templateJavaScript, TypeScript, npm
Virus Total Release Asset ScanDownload release assets and scan them with VirusTotalSee templateYAML
Upload Release Assets To Internet ArchiveDownload matching GitHub release assets and upload them to archive.orgSee templateYAML
Codacy Coverage UploadRun Node.js coverage and upload LCOV reports to CodacySee templateJavaScript, TypeScript, npm
Mega LinterRun Mega Linter and upload lint reportsSee templateYAML, code-quality
Playwright End-To-End TestsInstall Node dependencies and run Playwright end-to-end testsSee templateJavaScript, TypeScript, npm
GitHub Release StatsSummarize latest and aggregate GitHub release asset statisticsSee templateYAML
Sonar Cloud AnalysisBuild, test, and run SonarCloud analysis for a Node.js projectSee templateJavaScript, TypeScript, code-quality
Update ChangelogsGenerate changelogs with git-cliff and open a pull requestSee templateMarkdown, YAML
Deploy Jekyll To GitHub PagesBuild a Jekyll site and deploy it to GitHub PagesSee templateJekyll, Ruby, Markdown, deployment
ActionlintLint GitHub Actions workflows with actionlintSee templateYAML, code-quality
Dev Skim Security AnalysisRun Microsoft DevSkim and upload SARIF resultsSee templateYAML, code-quality
Ossar Security AnalysisRun OSSAR and upload SARIF resultsSee templateYAML, code-quality
Prettier CheckRun Prettier in check mode for common web project filesSee templateJavaScript, TypeScript, Markdown, CSS, code-quality
Lychee Link CheckCheck repository links with Lychee and the shared config packageSee templateMarkdown, HTML, YAML, code-quality
JSCPD Copy/Paste DetectionDetect copied and pasted code with JSCPD and the shared config packageSee templateJavaScript, TypeScript, code-quality
Repository MetricsGenerate repository metrics SVG output with lowlighter/metricsSee templateYAML
Microsoft Security DevOpsRun Microsoft Security DevOps scanning and upload SARIF resultsSee templateYAML, code-quality
Generate XML SitemapGenerate an XML sitemap and open a pull request with updatesSee templateHTML, Markdown, deployment
SpellcheckRun spellcheck-github-actions and upload the spellcheck outputSee templateMarkdown, YAML, code-quality
Deploy Static Content To GitHub PagesUpload static repository content and deploy it to GitHub PagesSee templateHTML, CSS, JavaScript, deployment
Stylelint CheckInstall dependencies and run StylelintSee templateCSS, JavaScript, TypeScript, code-quality
Super LinterRun GitHub Super Linter against the repositorySee templateYAML, code-quality
Typos Spell CheckRun crate-ci typos spell checkerSee templateMarkdown, YAML, code-quality

๐ŸŽฏ Quick Start

Using a Workflow Template

  1. Go to your repository
  2. Click Actions โ†’ Explore
  3. Search for or browse the workflow (e.g., "Node.js", "CodeQL")
  4. Click Use this template
  5. Review the generated workflow and customize (branch names, Node version, secrets, etc.)
  6. Commit and enable

Copying Directly

# Clone this repo (or download specific files)
cp .github/workflow-templates/node-test-matrix.yml YOUR_REPO/.github/workflows/

# Customize as needed

Only copy .properties.json files when you are publishing your own workflow-template repository. Normal consuming repositories only need the generated workflow YAML under .github/workflows/.

Calling a Reusable Workflow

Reusable variants live under .github/workflows/reusable-*.yml and can be called from a consumer workflow:

jobs:
 dependabot-auto-merge:
  uses: Nick2bad4u/workflow-templates/.github/workflows/reusable-auto-merge-dependabot.yml@main
  with:
   semver-policy: patch,minor

Use templates when you want a copied starter workflow. Use reusable workflows when you want centrally maintained logic.


๐Ÿ”ง Customization

Common Configuration

Most workflows support:

  • Node version: Set in ~/.node-version or package.json engines field
  • Permissions: Already set to least-privilege; reduce further if needed
  • Triggers: Adjust on section (branches, paths, schedules)
  • Secrets: Configure via repository settings (e.g., NPM_TOKEN, CODECOV_TOKEN)
  • Matrix strategies: Customize OS/Node version combinations

Example: Add a Custom Node Version

strategy:
 matrix:
  include:
   - os: ubuntu-latest
     node-version: 20
   - os: ubuntu-latest
     node-version: 22
   - os: windows-latest
     node-version: 22

๐Ÿ“ Configuration Files

Each workflow may require additional configuration:

WorkflowConfig FilePurpose
Auto-Label PRs.github/labeler.ymlDefine PR label rules
Gitleaks Scan.gitleaks.toml (optional)Custom secret patterns
Dependabot Auto-MergeRepository auto-merge + DEPENDABOT_AUTO_MERGE_SEMVERAuto-merge selected semver updates after checks
Mark Stale IssuesBuilt-in paramsDays before stale/close
Deploy Docusaurusdocusaurus.config.jsDocs site config
Submit IndexNowRepository secret: INDEXNOW_KEYSEO notification key
Git-Cliff Release Notes Validationcliff.tomlGit-cliff release-note heading convention
Lychee Link Checklychee-config-nick2bad4u + optional lint:lychee scriptShared link-check config and seven-day cache
JSCPD Copy/Paste Detectionjscpd-config-nick2bad4u + lint:jscpd scriptShared duplicate-code detection config

See USAGE.md for per-workflow setup details.


๐Ÿ”’ Security Features

All workflows include:

  • โœ… Harden-runner for egress policy audit
  • โœ… Least-privilege permissions blocks
  • โœ… Concurrency control to prevent race conditions
  • โœ… Pinned action versions (SHA or specific tag)
  • โœ… Timeouts for all jobs
  • โœ… Only GITHUB_TOKEN when possible; other secrets required explicitly

๐Ÿ—๏ธ Repository Structure

.github/
โ”œโ”€โ”€ actions/                     # Composite actions for step-level workflow reuse
โ”œโ”€โ”€ workflow-templates/          # Workflow templates shown in GitHub Actions UI
โ”‚   โ”œโ”€โ”€ *.yml                    # Workflow definitions
โ”‚   โ”œโ”€โ”€ *.properties.json        # Metadata for GitHub UI
โ”‚   โ”œโ”€โ”€ *.svg                    # Optional custom icons
โ”‚   โ””โ”€โ”€ SCHEMA.md                # Schema documentation
โ”œโ”€โ”€ workflows/                   # Repository workflows and reusable-*.yml callable workflows
โ””โ”€โ”€ ...

docs/examples/reusable-workflows/
โ””โ”€โ”€ *.yml                        # Caller workflow examples

docs/examples/composite-actions/
โ””โ”€โ”€ *.yml                        # Step-level composite action examples

schemas/
โ””โ”€โ”€ github-workflow-template-properties.schema.json  # JSON schema for validation

USAGE.md                         # Detailed per-workflow guide

๐Ÿงช Local Validation

Lint Workflows

npm install
npm run typecheck
npm run lint

Check Schema

npm run schema:check:workflow-template-properties

Update Schema (from upstream)

npm run schema:update:workflow-template-properties

๐Ÿ“š Resources


๐Ÿค Contributing

This repository contains reusable templates for personal projects. For suggestions or issues:

  1. File an issue describing the problem
  2. Reference the workflow name and minimal reproduction steps
  3. Include the error output and your repository setup

๐Ÿ“„ License

MIT


๐Ÿ’ก Best Practices Used

  1. Explicit permissions โ€” Every job declares permissions instead of relying on defaults
  2. Pinned action versions โ€” Actions reference SHAs or specific tags, never @latest or @main
  3. Concurrency control โ€” Workflows cancel previous runs on the same ref to avoid resource waste
  4. Timeout limits โ€” Jobs have explicit timeout-minutes to catch hangs
  5. Harden runner โ€” Step-security/harden-runner protects egress
  6. Configuration files โ€” Complex workflows document required setup files
  7. Job naming โ€” Clear job/step names aid debugging in logs
  8. Error handling โ€” if: !cancelled() and similar prevent silent failures

๐Ÿš€ Next Steps

  1. Browse workflows in Actions โ†’ Explore
  2. Read USAGE.md for your chosen workflow
  3. Customize for your project (Node version, branches, secrets)
  4. Test in a feature branch before merging to main
  5. Monitor workflow runs in the Actions tab

Questions or feedback? Open an issue or discussion on GitHub.