EffortlessMetrics/perl-lsp-swarm GitHub Actions scorecardPublic GitHub Actions data, last 30 days. Updated 7/11/2026, 5:20:53 AM.
Data sourced from public GitHub. GitSpider is not affiliated with or endorsed by this repository's owners. Request removal.
Biggest wins first, each with the exact config fix.
Pipeline LabelsAdd a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueCI (Nightly)The matrix expands to many parallel jobs per run, multiplying billable minutes, often more combos than you need. Trim the axes, or use `include:` to list only the combinations that matter.
strategy:
fail-fast: true
matrix:
include:
- { os: ubuntu-latest, node: 20 }
- { os: ubuntu-latest, node: 22 }CI (Nightly)The schedule fires at minute :00 — GitHub's peak window, where scheduled runs get delayed or skipped. Shift to any other minute for the same cadence with less contention.
on:
schedule:
- cron: '53 3 * * *' # was '0 3 * * *' — any non-:00 minute avoids the herdCI (Nightly)The schedule has no repository guard, so forks that enable Actions inherit the cron and burn their own minutes. Gate the job with `if: github.repository == 'owner/repo'`.
jobs:
nightly:
if: github.repository == 'owner/repo'
runs-on: ubuntu-latestDroid PR Reviewcheckout fetches the entire git history every run (`fetch-depth: 0`) and nothing in the workflow appears to read it. Remove the line — the default shallow clone is much faster on big repos. Keep it if a step genuinely needs history.
- uses: actions/checkout@v4
# fetch-depth: 0 removed — default shallow clone is enough hereDroid TagAdd a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueMerge Ready ReconcilerNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Merge Ready Reconciler`upload-artifact` has no `retention-days`, so artifacts keep up to 90 days (storage cost). Set e.g. `retention-days: 7`.
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7Merge Ready ReconcilerA schedule cron fires >4×/hour, so scheduled runs cost minutes around the clock. Loosen the cadence.
on:
schedule:
- cron: '*/30 * * * *' # every 30 min instead of every minuteMerge Ready ReconcilerThe schedule has no repository guard, so forks that enable Actions inherit the cron and burn their own minutes. Gate the job with `if: github.repository == 'owner/repo'`.
jobs:
nightly:
if: github.repository == 'owner/repo'
runs-on: ubuntu-latestMethodology GateNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Methodology Gate`upload-artifact` has no `retention-days`, so artifacts keep up to 90 days (storage cost). Set e.g. `retention-days: 7`.
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7Needs Label GateRuns on every push/PR with no `paths:` filter, so docs-only changes still trigger full CI. Add a `paths:` filter if that's common.
on:
pull_request:
paths:
- 'src/**'
- 'package.json'Perl Version MatrixThe schedule has no repository guard, so forks that enable Actions inherit the cron and burn their own minutes. Gate the job with `if: github.repository == 'owner/repo'`.
jobs:
nightly:
if: github.repository == 'owner/repo'
runs-on: ubuntu-latestPipeline LabelsRuns on every push/PR with no `paths:` filter, so docs-only changes still trigger full CI. Add a `paths:` filter if that's common.
on:
pull_request:
paths:
- 'src/**'
- 'package.json'PR PlanRuns on every push/PR with no `paths:` filter, so docs-only changes still trigger full CI. Add a `paths:` filter if that's common.
on:
pull_request:
paths:
- 'src/**'
- 'package.json'PR Plancheckout fetches the entire git history every run (`fetch-depth: 0`) and nothing in the workflow appears to read it. Remove the line — the default shallow clone is much faster on big repos. Keep it if a step genuinely needs history.
- uses: actions/checkout@v4
# fetch-depth: 0 removed — default shallow clone is enough heretokmd PR Reviewcheckout fetches the entire git history every run (`fetch-depth: 0`) and nothing in the workflow appears to read it. Remove the line — the default shallow clone is much faster on big repos. Keep it if a step genuinely needs history.
- uses: actions/checkout@v4
# fetch-depth: 0 removed — default shallow clone is enough hereUB Reviewcheckout fetches the entire git history every run (`fetch-depth: 0`) and nothing in the workflow appears to read it. Remove the line — the default shallow clone is much faster on big repos. Keep it if a step genuinely needs history.
- uses: actions/checkout@v4
# fetch-depth: 0 removed — default shallow clone is enough hereWorkflow Trigger LintNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Workflow Trigger Lint`upload-artifact` has no `retention-days`, so artifacts keep up to 90 days (storage cost). Set e.g. `retention-days: 7`.
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7# No concurrency control — applies to: Pipeline Labels, Droid Tag
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# Large build matrix — applies to: CI (Nightly)
strategy:
fail-fast: true
matrix:
include:
- { os: ubuntu-latest, node: 20 }
- { os: ubuntu-latest, node: 22 }
# Scheduled at the top of the hour — applies to: CI (Nightly)
on:
schedule:
- cron: '53 3 * * *' # was '0 3 * * *' — any non-:00 minute avoids the herd
# Scheduled workflow runs in forks — applies to: CI (Nightly), Merge Ready Reconciler, Perl Version Matrix
jobs:
nightly:
if: github.repository == 'owner/repo'
runs-on: ubuntu-latest
# Full-history clone (fetch-depth: 0) — applies to: Droid PR Review, PR Plan, tokmd PR Review, UB Review
- uses: actions/checkout@v4
# fetch-depth: 0 removed — default shallow clone is enough here
# No job timeout — applies to: Merge Ready Reconciler, Methodology Gate, Workflow Trigger Lint
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15
# Artifacts at default retention — applies to: Merge Ready Reconciler, Methodology Gate, Workflow Trigger Lint
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7
# Frequent scheduled runs — applies to: Merge Ready Reconciler
on:
schedule:
- cron: '*/30 * * * *' # every 30 min instead of every minute
# No path filters on triggers — applies to: Needs Label Gate, Pipeline Labels, PR Plan
on:
pull_request:
paths:
- 'src/**'
- 'package.json'Each snippet is representative — merge into the named workflow files rather than pasting wholesale.
This scorecard is a one-time snapshot. Install the free GitHub App to track this repo continuously: new regressions caught as they land, trends over time, on your public and private repos. Team adds the offending commit on the PR + Slack alerts.
Install & monitor this repo →Not ready to install? Get this report by email. No spam, unsubscribe anytime.