Analyze GitHub Action Logs
withastro/astro
Analyze recent GitHub Actions workflow runs to identify patterns, mistakes, and improvements.
Diagnose failed GitHub Actions runs for pi-agent-dashboard: the 11-file workflow taxonomy, affected-test selection, the release pipeline, known failure modes, and how to read gh run logs and…
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard ci-troubleshoot --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pi/skills/ci-troubleshoot .claude/skills/ci-troubleshoot && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ci-troubleshoot" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/.pi/skills/ci-troubleshoot into .claude/skills/ci-troubleshoot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-troubleshoot", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/.pi/skills/ci-troubleshootType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard ci-troubleshoot --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.pi/skills/ci-troubleshoot .agents/skills/ci-troubleshoot && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ci-troubleshoot" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/.pi/skills/ci-troubleshoot into .agents/skills/ci-troubleshoot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-troubleshoot", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard ci-troubleshoot --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.pi/skills/ci-troubleshoot .cursor/skills/ci-troubleshoot && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ci-troubleshoot" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/.pi/skills/ci-troubleshoot into .cursor/skills/ci-troubleshoot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-troubleshoot", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/BlackBeltTechnology/pi-agent-dashboard.git --path .pi/skills/ci-troubleshoot--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard ci-troubleshoot --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.pi/skills/ci-troubleshoot .gemini/skills/ci-troubleshoot && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ci-troubleshoot" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/.pi/skills/ci-troubleshoot into .gemini/skills/ci-troubleshoot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-troubleshoot", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard ci-troubleshootInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .github/skills && cp -r skills-src/.pi/skills/ci-troubleshoot .github/skills/ci-troubleshoot && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ci-troubleshoot" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/.pi/skills/ci-troubleshoot into .github/skills/ci-troubleshoot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-troubleshoot", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard ci-troubleshoot --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.pi/skills/ci-troubleshoot .opencode/skills/ci-troubleshoot && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ci-troubleshoot" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/.pi/skills/ci-troubleshoot into .opencode/skills/ci-troubleshoot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-troubleshoot", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ci-troubleshootDiagnose failed GitHub Actions runs for pi-agent-dashboard: the 11-file workflow taxonomy, affected-test selection, the release pipeline, known failure modes, and how to read gh run logs and…
CI Troubleshoot is an agent skill from BlackBeltTechnology/pi-agent-dashboard. Diagnose failed GitHub Actions runs for pi-agent-dashboard: the 11-file workflow taxonomy, affected-test selection, the release pipeline, known failure modes, and how to read gh run logs and retrigger jobs. Use when a CI run is red, a release is stuck, a workflow won't dispatch, or you need to know which workflow does what. See release-cut to trigger a release, release-revoke to revoke one.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts and reference files (for example `SKILL.md.AGENTS.md`, `references/common-failures.md` and `references/common-failures.md.AGENTS.md`).
It sits in DevOps & Cloud, covering CI/CD. It works with GitHub Actions. The repository describes itself as: Real-time web dashboard for pi coding-agent sessions. Multi-session view, live chat mirroring, integrated terminal, diff viewer, pi-flows execution, and mobile-first remote… The licence is MIT.
Read from SKILL.md and the folder at commit 7feac4d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 4 files in scripts/ (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
ghpnpmjqnpmgitvitestnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, pnpm, npm and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
NPM_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
CI Troubleshoot loads about 3.5k tokens when it runs, and up to ~7.8k if it reads all its reference files. Until then it costs about 104 tokens; SKILL.md has 1,299 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from BlackBeltTechnology/pi-agent-dashboard at commit 7feac4d, republished under its MIT licence (© BlackBeltTechnology). 1,299 words, ~3,526 tokens.
.claude/skills/ci-troubleshoot/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.Diagnose CI failures for pi-agent-dashboard. The repo has 11 workflow files: 9 entry workflows and 2 reusable workflows.
flowchart LR
ci[ci.yml] --> checks[guards + lint + build<br/>+ affected tests]
nightlyTests[nightly-tests.yml] --> full[full suite + nightly-tests issue]
deploy[deploy-site.yml] --> pages[GitHub Pages]
native[ci-e2e-electron.yml] --> nativeTests[native Electron E2E]
ciSmoke[ci-smoke.yml] --> smoke[_smoke.yml]
publish[publish.yml] --> smoke
ciElectron[ci-electron.yml] --> electron[_electron-build.yml]
nightly[nightly.yml] --> electron
publish --> electron
publish --> release[GitHub Release]
release --> sync[sync-release-version.yml]Full per-workflow detail: references/workflow-taxonomy.md.
pnpm exec tsx .pi/skills/ci-troubleshoot/scripts/list-recent-runs.ts # last 10 runs across all workflows
pnpm exec tsx .pi/skills/ci-troubleshoot/scripts/list-recent-runs.ts --failed # only failed
pnpm exec tsx .pi/skills/ci-troubleshoot/scripts/show-failed-run.ts <run-id> # failed steps + log tails
pnpm exec tsx .pi/skills/ci-troubleshoot/scripts/show-failed-run.ts # most recent failed runThese wrap gh run list, gh run view --log-failed, and similar. You need gh auth status to be authenticated.
ci.yml job taxonomy — affected-only testsci.yml runs parallel jobs (change: speed-up-ci-affected-tests):
| Job | Does | Red means |
|---|---|---|
select | scripts/select-affected-tests.mjs → artifact test-selection + job summary | selector could not run at all (it degrades to mode: full on its own errors) |
ci | guards, spec validate, lint, lint:e2e, Biome, build, publish-import checks — NO tests | a guard/lint/build failure |
unit ×4 | the selector's shard n via pnpm run test:parallel <files> | a test failed, dist/index.html missing, or verify-executed found an assigned file that never ran |
real-process | real-process files (runs only when selected) | as today's phase 2; retries once under CI |
ci-scenarios | the RUN_CI_SCENARIOS-gated packaging files only (skipped for OpenSpec-only diffs) | a packaging scenario failed |
ci-result | aggregate; check-result.mjs | select failed, a job failed/cancelled, or an EXPECTED job was skipped |
What did this run skip? Open the select job summary, or:
gh run download <run-id> -n test-selection -D /tmp/sel
jq '{mode, reason, counts, slowTierDeselected, unmapped}' /tmp/sel/selection.json
jq -r '.selected | to_entries[] | "\(.value)\t\(.key)"' /tmp/sel/selection.json | sort | head # file → layer
jq '.shards | map(length)' /tmp/sel/selection.jsonMode full has a reason: a global input (lockfile, root package.json, any vitest/tsconfig, setupFiles, the selector or its data), an unmapped file outside packages/, a ci:full label, workflow_dispatch, or a selector error (all-zero/non-ancestor/missing base).
Force a full run. ci:full label on the PR → takes effect on the NEXT push (there is no labeled trigger — on purpose). Immediate: gh workflow run ci.yml --ref <branch> (dispatch is always full).
Slow tier. scripts/test-selection/slow-tier.json (only the 504 s mutation harness) is deselected in affected mode unless the file itself changed; it runs nightly, in full mode, and under ci:full. Listed under "Slow-tier deselections" in the summary.
A test is green on PRs but red nightly. Not automatically a selection miss — flakes and environment changes do this too. The nightly-tests issue names the bisect range (A..B, since the last green SCHEDULED run). Bisect in that range to the breaking commit, then open that commit's PR run test-selection artifact: if the failing file WAS selected (and executed), debug the test itself; only if it was NOT selected did selection miss it — close the gap with a scripts/test-selection/triggers.json entry or a layer fix, never just a re-run.
nightly-tests issue triage. One open issue, label nightly-tests, updated each red scheduled night, closed on the first green one. "no report" = a job was cancelled or died (infra), not a pass. "no new commits" = flake or environment. Refreshed shard timings: artifact test-timings → copy to scripts/test-selection/timings.json by hand.
Unit-test failure → read the vitest-report-* artifact FIRST, not the log.
Each vitest job uploads its own report on every run (if: always(), 14-day retention):
vitest-report-unit-<n>, vitest-report-real-process, vitest-report-ci-scenarios.
gh run download <run-id> -p 'vitest-report-*' -D /tmp/vr
# failures
jq -r '.testResults[].assertionResults[] | select(.status=="failed") | .fullName' /tmp/vr/*/vitest*.json
# RETRIED PASSES — passed, but a failed attempt's error is still retained
jq -r '.testResults[].assertionResults[] | select(.status=="passed" and (.failureMessages|length)>0) | .fullName' /tmp/vr/*/vitest*.jsonThere is no retryCount field. Vitest 4.1.11's JSON reporter emits only
{ancestorTitles, fullName, status, title, duration, failureMessages, meta, tags}; retryCount
lives on the runner API, not the report. The retried-pass signature is therefore
status == "passed" with a non-empty failureMessages. Verified empirically against a
fail-once fixture; re-verify after a vitest major upgrade — if the second query returns nothing on
a run you know flaked, the reporter shape moved.
Retry semantics: ONLY the server-real-process project retries, ONLY under CI, ONLY once
(retry: process.env.CI ? 1 : 0). A green job whose report matches the retried-pass query did NOT
pass cleanly — that test flaked. A test failing twice still reds the job. Locally retry is 0.
The default reporter prints (retry x1) only for tests it lists; a retried PASS is invisible
there, which is why the artifact is the first move.
Locally npm test = test:parallel then test:real-process; in CI the real-process phase is its
own real-process job running vitest run --config packages/server/vitest.real-process.config.ts.
Scripts are TypeScript and cross-platform. All invocations use
pnpm exec tsx, which resolves the declared local dependency and fails if dependencies are absent.ghCLI is cross-platform.
flowchart TD
red{Run is red?} --> workflow{Which workflow?}
workflow --> ci[ci.yml]
workflow --> publish[publish.yml]
workflow --> electron[ci-electron.yml]
workflow --> other[Other workflow]
ci --> common[Tests, lint, build<br/>references/common-failures.md]
other --> taxonomy[references/workflow-taxonomy.md]
publish --> releaseJob{Which release job?}
releaseJob --> tag[tag-and-push]
releaseJob --> npmOrder[publish: npm ordering]
releaseJob --> matrix[electron: matrix leg]
releaseJob --> assets[github-release: asset collision]
electron --> smoke[On-demand Electron smoke<br/>never publish]publish.ymlThe release flow uses a gated 7-job graph:
flowchart LR
resolve[resolve] --> checks[ci-checks]
resolve --> smoke[smoke via _smoke.yml]
checks --> tag[tag-and-push]
smoke --> tag
tag --> publish[publish packages]
publish --> electron[electron via _electron-build.yml]
electron --> release[github-release]Tag-push runs skip tag-and-push; publish.if accepts that skip while still requiring checks and smoke. Do not remove needs: [resolve, publish] from electron. The bundled server installs the just-published packages. Locked by packages/shared/src/__tests__/publish-workflow-contract.test.ts.
Full walkthrough with per-job failure modes: references/release-pipeline.md.
Maintained in references/common-failures.md. Headline catalog:
| Failure | Where | Diagnosis | Fix |
|---|---|---|---|
verify-lockfile-versions.mjs fails | tag-and-push | Cross-ref specifier in lockfile doesn't match bumped version | Regenerate lockfile + commit; or fix scripts/sync-versions.js |
CHANGELOG already has ## [X.Y.Z] | tag-and-push | You're re-dispatching with a version that was already promoted | Bump to a new version, or revert the CHANGELOG section |
npm publish 403 | publish | OIDC trusted publisher not configured for that package | Configure in npm web UI; or temporarily use NPM_TOKEN |
| Electron matrix leg fails | electron | Missing prebuild for node-pty/better-sqlite3 on that OS/arch | Check bundle-server.mjs GO/NO-GO guard; rebuild prebuilds |
shell: bash on Windows runner | any | Lint test no-bash-on-windows.test.ts flags it | Remove shell: bash or guard with if: runner.os != 'Windows' |
Electron job missing needs: | repo-lint | publish-workflow-contract.test.ts failed | Restore needs: [resolve, publish] |
Cannot find module @blackbelt-technology/... in electron | electron | publish job didn't run or failed; bundled server can't resolve from npm | Check publish job — re-run only if it failed; never bypass |
| Fastify crashes in bundled server smoke | any using node | Bad Node version pinned in workflow | Bump node-version: to ≥ 22.18.0 |
Loud-but-harmless EADDRINUSE in smoke | smoke job | Concurrent server spawns | Usually self-recovering; check next log lines |
| Green run but a timing test flaked | ci.yml real-process | server-real-process retried once | vitest-report-real-process artifact → passed + non-empty failureMessages; root-cause it, do not ignore |
verify-executed fails: assigned file did not execute | ci.yml unit/real-process/ci-scenarios | vitest filter/path mismatch, or the file is no longer collected | Check the file still matches its project include; re-run select locally: node scripts/select-affected-tests.mjs --base origin/develop --merge-base --out /tmp/s.json |
ci-result red with every job green | ci.yml | a job the selection EXPECTED was skipped, or select failed | Read ci-result log: it names the job |
| Nightly red, PR was green | nightly-tests.yml | flake, environment, or a selection miss | Bisect the issue's range; check the breaking PR's test-selection artifact — selected → debug the test; not selected → trigger/layer fix |
real-process-project-guard.test.ts fails | repo-lint | New server test spawns a process but runs in the parallel project | Add it to packages/server/vitest.real-process-files.ts, or annotate // real-process-exempt: <reason> |
electron + github-release SKIPPED despite green publish | electron | Tag-push path skips tag-and-push; a skipped needs-ancestor poisons electron's DEFAULT if: success() | Give electron explicit if: ${{ !cancelled() && needs.publish.result == 'success' }} (mirrors publish's guard). First hit v0.6.1 |
✗ koffi prebuild GO/NO-GO failed at ...koffi\build\koffi\win32_x64\koffi.node | electron (both win32 legs) | koffi@3.x ships the prebuild at @koromix/koffi-win32-x64/win32_x64/koffi.node; the 2.x koffi/build/... path is never created | Update bundle-server.mjs guard to check the 3.x @koromix path first, 2.x fallback. First hit v0.6.1 |
arm64 NSIS smoke: pi-dashboard.exe not found ... after 150s | electron (win32-arm64) | x64 runner can't execute an arm64 Setup.exe/app, so silent install extracts nothing | Guard the NSIS install-smoke step if: matrix.platform == 'win32' && matrix.arch == 'x64'. arm64 installer still builds+ships. First hit v0.6.1 |
# Last 10 runs (all workflows, this branch)
gh run list -L 10
# Last 5 failed runs across all workflows
gh run list -L 50 | grep -E 'failure|cancelled' | awk 'NR <= 5'
# Get a specific run, only the failed steps
gh run view <run-id> --log-failed
# Watch a running workflow (live tail)
gh run watch <run-id>
# Re-run only the failed jobs (preserves successful ones, saves CI time)
gh run rerun <run-id> --failed
# Re-run from scratch (rare; usually for flakes)
gh run rerun <run-id>
# Cancel a stuck run
gh run cancel <run-id>gh run view --log-failed is the highest-leverage one — it pulls only failed-step output, which is what you want 95% of the time.
Never bypass the release pipeline with a manual npm publish. That loses OIDC trusted publishing, lockfile synchronization, changelog promotion, smoke gates, and Electron dependency ordering.
Rerun gotcha (tag-push releases): gh run rerun <id> --failed does NOT re-dispatch skipped downstream reusable-workflow jobs (e.g. electron) even after publish flips green — they stay skipped. After a smoke-gate flake on a tag-push release, re-push the tag for a clean single-pass run instead: git push --delete origin vX.Y.Z && git push origin vX.Y.Z. publish is idempotent (skips already-published packages), so re-pushing the tag is safe.
Repo-lint tests fail the ci job specifically. They're listed in debug-dashboard/references/test-failure-triage.md → "Repo-lint tests". Fix the file that violated the rule. Don't loosen the lint — each one exists because of a real regression.
release-cut — trigger a release (cuts the tag that fires publish.yml)release-revoke — rollback / yank a releasedebug-dashboard — when the bug only reproduces locallyimplement — back to writing the fixcode-review — review the fix before re-pushing© BlackBeltTechnology, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (scripts, references) in .pi/skills/ci-troubleshoot of BlackBeltTechnology/pi-agent-dashboard.
Open the folder on GitHubat commit 7feac4d
CI Troubleshoot next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| CI Troubleshoot this skillBlackBeltTechnology/pi-agent-dashboard | 316 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Analyze GitHub Action Logswithastro/astro | 63k | 1 repos | ~1.3k | Automated safety check: Pass | Custom licence | |
| GitHub Actions Templatesbartstc/vite-ts-react-template | 122 | 14 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Nushellccusage/ccusage | 19k | — | ~938 | Automated safety check: Pass | Custom licence | |
| Repo Hygiene Scan and FixQwenLM/qwen-code | 28k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit | 260 | 6 repos | ~1.1k | Automated safety check: Notes | Custom licence |
withastro/astro
Analyze recent GitHub Actions workflow runs to identify patterns, mistakes, and improvements.
bartstc/vite-ts-react-template
Create production-ready GitHub Actions workflows for automated testing, building, and deploying applications.
ccusage/ccusage
Guides ccusage Nushell scripts. An agent skill from ccusage/ccusage.
QwenLM/qwen-code
Scheduled CI skill that scans a repository for small, certain docs, test and code hygiene issues and fixes them on one branch with a commit per finding.
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
Chachamaru127/claude-code-harness
Diagnoses failing CI pipelines and tests, deciding first whether the test or the implementation is at fault, and hands hard cases to a dedicated fixer subagent.
BlackBeltTechnology/pi-agent-dashboard
Browser automation via the agent-browser CLI. An agent skill from BlackBeltTechnology/pi-agent-dashboard.
BlackBeltTechnology/pi-agent-dashboard
Diagnose problems in the running pi-agent-dashboard system: server.log, /api/health, bridge WebSocket connectivity, vitest triage, known-issue FAQ entries.
BlackBeltTechnology/pi-agent-dashboard
Disciplined implementation in pi-agent-dashboard: the rebuild matrix (extension→reload, server→restart, client→build+restart, openspec-apply→full rebuild) plus the project's code discipline rules.
BlackBeltTechnology/pi-agent-dashboard
Monitor and control the pi-dashboard server. An agent skill from BlackBeltTechnology/pi-agent-dashboard.
BlackBeltTechnology/pi-agent-dashboard
Turn a pi session into a Markdown "how-we-did-it" collaboration guideline: reads the session's JSONL transcript and synthesizes a reusable playbook of which prompts worked, what had to be steered…
BlackBeltTechnology/pi-agent-dashboard
Generate, validate and view BPMN 2.0 process packages from a prose description, and render existing .bpmn / .dmn files.
Works with
Categories
Diagnose failed GitHub Actions runs for pi-agent-dashboard: the 11-file workflow taxonomy, affected-test selection, the release pipeline, known failure modes, and how to read gh run logs and…. CI Troubleshoot is an agent skill from BlackBeltTechnology/pi-agent-dashboard. Diagnose failed GitHub Actions runs for pi-agent-dashboard: the 11-file workflow taxonomy, affected-test selection, the release pipeline, known failure modes, and how to read gh run logs and retrigger jobs.
CI Troubleshoot fits situations like: A CI run is red; A release is stuck; A workflow wont dispatch; you need to know which workflow does what.
Run `npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a claude-code`. Or copy the skill folder (.pi/skills/ci-troubleshoot in BlackBeltTechnology/pi-agent-dashboard) into .claude/skills/ci-troubleshoot in your project. Claude Code loads it when a task matches its description.
Run `npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a codex`. Or copy the skill folder (.pi/skills/ci-troubleshoot in BlackBeltTechnology/pi-agent-dashboard) into .agents/skills/ci-troubleshoot in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add BlackBeltTechnology/pi-agent-dashboard --skill ci-troubleshoot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ci-troubleshoot, .gemini/skills/ci-troubleshoot, .github/skills/ci-troubleshoot and .opencode/skills/ci-troubleshoot in your project.
Going by SKILL.md and its folder, CI Troubleshoot needs TypeScript for the scripts in its folder, the command-line tools its instructions call (gh, pnpm, jq, npm, git and vitest) and credentials named NPM_TOKEN. Our summary lists: Node.js; A credential in NPM_TOKEN.
SKILL.md contains no URLs. Its commands use gh, npm and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
CI Troubleshoot is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with CI Troubleshoot: Analyze GitHub Action Logs (withastro/astro, 63k stars), GitHub Actions Templates (bartstc/vite-ts-react-template, 122 stars), Nushell (ccusage/ccusage, 19k stars) and Repo Hygiene Scan and Fix (QwenLM/qwen-code, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
BlackBeltTechnology (a GitHub organization) maintains it in BlackBeltTechnology/pi-agent-dashboard, which has 316 GitHub stars. The repository holds 70 skills in this directory. The repository was last updated on October 11, 2026.
Source: BlackBeltTechnology/pi-agent-dashboard on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.