gha-doctor
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GH_HOST | No | GitHub Enterprise Server hostname. Set to target a GHES instance instead of github.com. | |
| GITHUB_TOKEN | No | GitHub token for authentication. Needed for history analysis and log reading. If not set, gha-doctor will try to use 'gh auth token'. | |
| GITHUB_API_URL | No | Base URL of the GitHub API. Automatically picked up inside GHES Actions jobs. Overrides the API endpoint. | |
| GH_ENTERPRISE_TOKEN | No | Token for GitHub Enterprise Server. Used when GH_HOST is set. Alternatively GITHUB_TOKEN or gh auth token --hostname can be used. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| analyze_repoA | Full CI health report for a GitHub repository: static workflow lint, run-history analysis (success/failure rates, flaky jobs, retry waste, superseded PR runs, queue times, duration trends, zombie crons, PR feedback time), cache and artifact checkups, a 0-100 health score, and a ranked, dollar-quantified top-wins list. Makes ~100+ GitHub API calls and typically takes 10-30 seconds. Optionally set flaky_logs to also read N flaky-failure job logs and name the flaky tests (needs a token), or cache_logs to measure the real cache hit rate from N job logs. |
| lint_repoA | Static lint of GitHub Actions workflows and action manifests only (no run history, fast): 21 rules covering missing timeouts, no concurrency cancellation, dead action versions, retired runner labels, deprecated workflow commands, unguarded crons, and more. Pass repo to lint any GitHub repository via the API (no clone needed), or dir for a local checkout (offline). Defaults to the current directory. |
| preview_fixesA | Preview the exact unified diff that gha-doctor --fix would apply for auto-fixable findings (10 of 21 rules), without writing anything. Pass repo for any GitHub repository (no clone needed) or dir for a local checkout. To actually apply fixes, run |
| run_deep_diveA | Deep-dive one workflow run: why was it slow, or why did it fail? Job waterfall (queue vs execution), every job and step compared against the workflow's own recent medians, named step regressions; failed runs lead with the failing job and step, name the failing tests (30+ test frameworks recognized), and inline the failing step's log tail (needs a token). |
| pr_deep_diveA | Diagnose a pull request's CI: every workflow run on the PR's head commit, how long the PR waited for a verdict, re-run smells, and a full deep dive into the latest failed run — failing job and step, named failing tests (30+ frameworks recognized), and the failing step's log tail. The natural first call when someone asks why CI is failing or slow on their PR. |
| org_overviewA | Fleet triage across an organization's (or user's) most recently pushed repositories: per-repo run counts, failure rates, median duration, compute minutes, last-run age, and fleet-wide zombie crons (scheduled workflows failing on repeat), one API call per repo. Useful for finding which repository's CI to look at first. |
| explain_ruleA | Print the full documentation for one lint rule: what it flags, why it matters, how to fix it, and how to suppress it. Rule IDs look like D001; every finding cites one. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool targets a distinct scope: run_deep_dive for a single run, pr_deep_dive for a PR's CI, analyze_repo for whole-repo health, lint_repo for static linting, explain_rule for rule docs, org_overview for fleet triage, and preview_fixes for diffs. Though pr_deep_dive includes a deep-dive component, its PR-level purpose is clearly separated, and all descriptions are explicit about boundaries.
Names are consistently snake_case and mostly follow a verb_noun pattern (analyze_repo, explain_rule, lint_repo, preview_fixes). The exception is the two 'deep_dive' suffixes in run_deep_dive and pr_deep_dive, plus org_overview being noun_noun, but these are minor deviations within an otherwise readable and predictable naming scheme.
7 tools is well-scoped for a CI analysis server. Each tool covers a meaningful slice of the domain (org, repo, PR, run, lint, rule, fix), and none feel redundant or unnecessary.
The tool surface covers the full analysis lifecycle: org-level triage, repo health, PR diagnosis, single-run deep dives, static linting, rule explanation, and previewing fixes. There are no obvious dead ends, and the described workflows (e.g., 'why is my PR slow/failing' → pr_deep_dive) are fully supported.