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.
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-jsonAutomated 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** — ...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 shownThe 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 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"Callers reference @main for the floating tip. Tag stable versions
(v0.1.0, v1) once contracts solidify and migrate callers to the tag.