Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shared-workflows — Reusable CI · the fleet's canonical workflows

main License Ask DeepWiki

GitHub Actions Claude YAML

shared-workflows

Reusable GitHub Actions workflows for Lentago Labs repositories.

Authorship: The workflows and documentation in this repo are co-written with Claude (Anthropic). I direct the work and review the output; Claude writes the YAML. I'm an infrastructure operator, not a software engineer — please don't read this repo as a portfolio of coding ability.

Workflows

claude-responder.yml

Interactive @claude responder. Routes to opus/sonnet/haiku based on model:opus / model:sonnet / model:haiku labels on the issue or PR.

name: Claude Code

on:
  issue_comment:
    types: [created]
  pull_request:
    types: [opened, synchronize, labeled]
  pull_request_review_comment:
    types: [created]
  pull_request_review:
    types: [submitted]
  issues:
    types: [opened, edited, labeled, assigned]

jobs:
  claude:
    uses: lentago/shared-workflows/.github/workflows/claude-responder.yml@main
    secrets: inherit
    with:
      allowed_tools: '"Bash(git add:*)" "Bash(git commit:*)" "Read" "Edit" "Write"'
      # default_model: opus      # optional, default "sonnet"
      # max_turns: 25             # optional
      # extra_args: |             # optional, e.g. --verbose
      #   --verbose
      #   --output-format stream-json

claude-review.yml

Automated PR review pinned to Haiku. Caller passes a focus block describing the repo and what to look for; the reusable workflow wraps it with the common PR-context header, rules, and output-format scaffolding.

The review is advisory and non-blocking: the review step runs continue-on-error and the job always exits 0, so a transient API failure or turn-budget exhaustion never reds the check or blocks auto-merge — if the review can't complete, a neutral soft-fail comment is posted instead. Optional inputs: model (default haiku), max_turns (default 40, set high enough that a normal review finishes before the cap), allowed_bots (default "*").

name: Claude Code Review

on:
  pull_request:
    types: [opened, synchronize, ready_for_review, reopened]
    paths-ignore:
      - "*.md"
      - "docs/**"
      - "LICENSE"
      - ".gitignore"

jobs:
  claude-review:
    uses: lentago/shared-workflows/.github/workflows/claude-review.yml@main
    secrets: inherit
    with:
      review_prompt: |
        This repository is X. Focus your review on:

        1. **Foo** — ...
        2. **Bar** — ...

docs-check.yml

Resolves relative markdown links across a repo's git-tracked markdown and fails on genuinely broken ones — the fleet's most common change class ships documentation, and renames/removals silently break relative links.

Trigger it unconditionally — no paths: filter. This workflow is built to serve as a required status check, and a required check whose workflow never triggers is held "Expected" forever and deadlocks every non-matching PR (the hard rule in fleet-ops/required-checks.json). Trigger on pull_request across the board; the checker is cheap and skips fast when no markdown changed.

The checker skips two link classes by rule — the two that accounted for 237 of 240 raw failures in the fleet-wide scan (lentago/.github#57):

  • Site-absolute router routes (/library/, /guides/stormwater/) — resolved by an Astro/Starlight site router at build time, not the filesystem.
  • Links that escape the repo root (../../issues/5) — GitHub's repo-relative navigation convention, which resolves on github.com and can never point at a tracked file anyway.

Anything left is handled by the ignore input (newline-separated globs matched against the source-file path or the link target) or a checked-in .docs-check-ignore file at the repo root (one glob per line, # comments).

name: docs-check

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]
    # No paths: filter — this is a required check and must always report.

jobs:
  docs-check:
    uses: lentago/shared-workflows/.github/workflows/docs-check.yml@main
    with:
      # ignore: |                 # optional, per-repo false positives
      #   */api-reference/*
      #   CHANGELOG.md
      # paths: "*.md *.markdown"   # optional, default shown

The link resolver lives at ci/check_docs_links.py — a single, testable source promoted from lentago/.github's ci/validate.py. Run its test suite locally with python3 ci/test_check_docs_links.py.

shellcheck.yml

ShellCheck for bash scripts. Pass an explicit scripts list, or leave it empty for repo-wide find -name '*.sh' discovery.

name: ShellCheck

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

jobs:
  shellcheck:
    uses: lentago/shared-workflows/.github/workflows/shellcheck.yml@main
    with:
      scripts: |
        deploy.sh
        scripts/start.sh
      # severity: warning  # optional, default "warning"

Versioning

Callers reference @main for the floating tip. Tag stable versions (v0.1.0, v1) once contracts solidify and migrate callers to the tag.

About

Reusable GitHub Actions workflows shared across the Lentago Labs fleet: an interactive @claude responder (routes to opus/sonnet/haiku by label), automated PR review, CI patterns, and fleet-wide policy enforcement. The canonical source for cross-repo CI conventions.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages