Skip to content
Latchkey

Check Live Issue/PR Body Links workflow (jeremylongshore/claude-code-plugins-plus-skills)

The Check Live Issue/PR Body Links workflow from jeremylongshore/claude-code-plugins-plus-skills, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get caching, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: jeremylongshore/claude-code-plugins-plus-skills.github/workflows/check-issue-body-links.ymlLicense MITView source

What it does

This is the Check Live Issue/PR Body Links workflow from the jeremylongshore/claude-code-plugins-plus-skills repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: Check Live Issue/PR Body Links

# Audits live GitHub issue + PR bodies for broken repo-relative links.
# Closes the gap that bit us on 2026-05-30 (issue #789 cited a gitignored
# 000-docs/ path; lychee couldn't catch it because the broken reference
# lived in a GitHub issue body, not a committed .md file).
#
# Runs weekly + on demand. Uploads the report as a build artifact.
# Failure does not block any PR - this is a watchdog, not a gate. If
# the report shows broken links, fix them by either publishing the
# referenced path (gitignore re-include + commit) or by updating the
# issue/PR body to point elsewhere.

on:
  schedule:
    # Mondays 06:00 UTC - runs an hour after the repo-side lychee job.
    - cron: '0 6 * * 1'
  workflow_dispatch:
    inputs:
      include_closed:
        description: 'Include closed issues + PRs in the audit'
        required: false
        default: false
        type: boolean

permissions:
  contents: read
  issues: read
  pull-requests: read

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Run live-body audit
        id: audit
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          set +e
          ARGS=""
          if [ "${{ inputs.include_closed }}" = "true" ]; then
            ARGS="--closed"
          fi
          node scripts/check-issue-body-links.mjs $ARGS \
            > issue-body-link-report.md 2> audit.stderr
          AUDIT_EXIT=$?
          cat audit.stderr
          echo "audit_exit=${AUDIT_EXIT}" >> "$GITHUB_OUTPUT"
          exit 0

      - name: Upload report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: issue-body-link-report-${{ github.run_id }}
          path: issue-body-link-report.md
          retention-days: 90

      - name: Surface failure to summary
        if: steps.audit.outputs.audit_exit != '0'
        run: |
          {
            echo "## Live issue/PR body link audit found broken references"
            echo ""
            cat issue-body-link-report.md
          } >> "$GITHUB_STEP_SUMMARY"

The same workflow, on Latchkey

Estimated ~20% faster on cache hits, plus fewer wasted runs and a safer supply chain. Added and changed lines are highlighted.

name: Check Live Issue/PR Body Links
 
# Audits live GitHub issue + PR bodies for broken repo-relative links.
# Closes the gap that bit us on 2026-05-30 (issue #789 cited a gitignored
# 000-docs/ path; lychee couldn't catch it because the broken reference
# lived in a GitHub issue body, not a committed .md file).
#
# Runs weekly + on demand. Uploads the report as a build artifact.
# Failure does not block any PR - this is a watchdog, not a gate. If
# the report shows broken links, fix them by either publishing the
# referenced path (gitignore re-include + commit) or by updating the
# issue/PR body to point elsewhere.
 
on:
  schedule:
    # Mondays 06:00 UTC - runs an hour after the repo-side lychee job.
    - cron: '0 6 * * 1'
  workflow_dispatch:
    inputs:
      include_closed:
        description: 'Include closed issues + PRs in the audit'
        required: false
        default: false
        type: boolean
 
permissions:
  contents: read
  issues: read
  pull-requests: read
 
jobs:
  audit:
    timeout-minutes: 30
    runs-on: latchkey-small
    steps:
      - uses: actions/checkout@v4
 
      - uses: actions/setup-node@v4
        with:
          cache: 'npm'
          node-version: '20'
 
      - name: Run live-body audit
        id: audit
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          set +e
          ARGS=""
          if [ "${{ inputs.include_closed }}" = "true" ]; then
            ARGS="--closed"
          fi
          node scripts/check-issue-body-links.mjs $ARGS \
            > issue-body-link-report.md 2> audit.stderr
          AUDIT_EXIT=$?
          cat audit.stderr
          echo "audit_exit=${AUDIT_EXIT}" >> "$GITHUB_OUTPUT"
          exit 0
 
      - name: Upload report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: issue-body-link-report-${{ github.run_id }}
          path: issue-body-link-report.md
          retention-days: 90
 
      - name: Surface failure to summary
        if: steps.audit.outputs.audit_exit != '0'
        run: |
          {
            echo "## Live issue/PR body link audit found broken references"
            echo ""
            cat issue-body-link-report.md
          } >> "$GITHUB_STEP_SUMMARY"
 

What changed

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow