Agent skill

Analyze CI Failure

by MartinStyk in MartinStyk/apk-analyzer

A skill your agent uses to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix.

GPL-3.0Auto-check passedDevOps & Cloud

Install Analyze CI Failure

skills CLI
$ npx skills add MartinStyk/apk-analyzer --skill analyze-ci-failure -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install MartinStyk/apk-analyzer analyze-ci-failure --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/MartinStyk/apk-analyzer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/analyze-ci-failure .claude/skills/analyze-ci-failure && rm -rf skills-src

Use ~/.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/

Facts

Skill name
analyze-ci-failure
GitHub stars
370
Token cost
~1.9k tokens
SKILL.md length
924 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
GPL-3.0

At a glance

A skill your agent uses to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix.

  • Works in 5 steps: Find the run → Check job-level status, not just the… → Pull only the failing job's log, then… → …
  • Check GitHub Actions build status
  • SKILL.md covers Workflows in this repo, Step 1 — Find the run, Step 2 — Check job-level… and Step 3 — Pull only the failing…, plus 3 more sections
  • Calls gh; needs FIREBASE_TOKEN and SIGN_KEY

What it does

Analyze CI Failure is an agent skill from MartinStyk/apk-analyzer. Use to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix. Triggered by phrases like "check the latest build", "did CI pass", "why did the build fail", "check the GitHub Actions run", "analyze this workflow run", "check run <id", "check the build for this PR".

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering CI/CD and Failing and flaky tests. It works with GitHub Actions. The repository describes itself as: The most downloaded APK analysis app on Google Play. Detailed reports of every app on your device. No root, no ads, nothing leaves the phone. The licence is GPL-3.0.

When your agent uses it

  • Check GitHub Actions build status
  • Diagnose why a workflow run failed and propose a fix

Example prompts

  • “check the latest build”
  • “did CI pass”
  • “why did the build fail”
  • “/analyze-ci-failure”

Requirements

  • A credential in FIREBASE_TOKEN
  • A credential in SIGN_KEY

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Find the run
  2. Check job-level status, not just the run-level conclusion
  3. Pull only the failing job's log, then filter for the signal
  4. Known failure signatures in this repo
  5. Reproduce and propose a fix

What it can do on your machine

Read from SKILL.md and the folder at commit d807559. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • FIREBASE_TOKEN
    • SIGN_KEY
    • SIGN_KEY_STORE_PASSWORD
    • SIGN_KEY_PASSWORD

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Analyze CI Failure loads about 1.9k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 924 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~80
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from MartinStyk/apk-analyzer at commit d807559, republished under its GPL-3.0 licence (© MartinStyk). 924 words, ~1,879 tokens.

Download SKILL.mdSave it as .claude/skills/analyze-ci-failure/SKILL.md (or your agent's skills folder).
name
analyze-ci-failure
description
Use to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix. Triggered by phrases like "check the latest build", "did CI pass", "why did the build fail", "check the GitHub Actions run", "analyze this workflow run", "check run <id>", "check the build for this PR".

Skill: Analyze a GitHub Actions Run and Propose a Fix

Uses the gh CLI (already authenticated) to inspect workflow runs on GitHub Actions, isolate the actual failing step from a noisy log, and turn it into a root cause + a proposed fix.

Workflows in this repo

They live at .github/workflows/.

FileNameTriggerWhat it runs
.github/workflows/ci.ymlContinuous integrationPush to or pull request against developParallel verify and build-apk jobs; distribute on pushes after both pass
.github/workflows/release.ymlReleasePush of a semantic version tag (X.Y.Z)Parallel verify and build-release jobs; GitHub Release, Play Store beta, and Firebase App Distribution publish after both pass
.github/workflows/agent-context.ymlAgent contextContext, skill, adapter, root-build, or module-graph changes against developvalidate: validateAgentContext

Step 1 — Find the run

GivenCommand
"latest build" / "latest CI run"gh run list --workflow ci.yml --limit 5
"latest release run"gh run list --workflow release.yml --limit 5
"latest context check"gh run list --workflow agent-context.yml --limit 5
A run ID or run URLgh run view <run-id>
A PR numbergh pr checks <pr-number>
Only failuresgh run list --status failure --limit 10

Step 2 — Check job-level status, not just the run-level conclusion

gh run view <run-id> prints a ✓/X per job — read this before pulling logs. The Android workflows have parallel verification and artifact-build jobs followed by downstream distribution jobs. The release workflow also has Play Store and GitHub Release jobs. Confirm the failed job and its dependencies before assuming the cause; a downstream artifact failure may still originate in build-apk or build-release.

Step 3 — Pull only the failing job's log, then filter for the signal

On macOS/Linux:

bash
gh run view <run-id> --log-failed | grep -inE "error:|FAILURE:|Execution failed|exception|##\[error\]"
bash
gh run view <run-id> --log-failed | sed -n '<start>,<end>p'

On Windows PowerShell:

powershell
gh run view <run-id> --log-failed |
    Select-String -Pattern 'error:|FAILURE:|Execution failed|exception|##\[error\]' `
        -CaseSensitive:$false `
        -Context 5, 15

If filtering finds nothing useful, the failure may be a plain BUILD FAILED with no separate error: line — in that case find the last > Task :... line before the failure; that's the failing Gradle task.

Step 4 — Known failure signatures in this repo

Symptom in the logRoot causeFix
Agent context validation failedA module lacks scoped guidance, an AGENTS.md/CLAUDE.md pair is broken, skill metadata is invalid, a local context link is broken, or a Copilot adapter duplicates a shared skillFollow each listed validation error, then rerun ./gradlew validateAgentContext
BUILD FAILED with ktlint-style messages or Compose compile errors traceable to formattingUnformatted/violating Kotlin broke compilationUse the spotless-fix skill
e: file:///path/to/File.kt:12:5 ...Kotlin compiler error, points directly at file:lineOpen the file, fix per AGENTS.md conventions
Fetch Firebase google-services.json fails in either workflowFIREBASE_TOKEN, FIREBASE_APP_ID, or FIREBASE_PROJECT_ID is missing/wrong, or the token cannot access the configured Firebase project/appUse gh secret list to confirm all three exist. Secret values are masked and Firebase access cannot be repaired from logs; report the exact Firebase CLI error to the user
Signing step fails in release.yml (sign_aab or sign_apk)One of SIGN_KEY, SIGN_KEY_ALIAS, SIGN_KEY_STORE_PASSWORD, SIGN_KEY_PASSWORD repo secrets is missing/wrong, or the keystore is corrupt/mismatched with the aliasgh secret list to confirm all four exist; can't verify the keystore itself from CI logs — ask the user to check it locally
Deploy to Play Store step fails with an auth/permission errorGOOGLE_SERVICE_ACCOUNT secret is missing, expired, or the service account lacks Play Console API access for sk.styk.martin.apkanalyzerCheck gh secret list; Play Console access itself can't be fixed from CI — flag to the user
Distribute APK to Firebase App Distribution fails after a successful buildFIREBASE_TOKEN/FIREBASE_APP_ID is wrong, the token lacks access, or the internal-testers group is unavailableConfirm both secrets exist with gh secret list, then report the Firebase CLI error; project permissions and tester groups require user access
A future JDK bump to the Gradle toolchain (jvmToolchain(N), gradle-daemon-jvm.properties) isn't mirrored in one of the two workflows' setup-java stepUsually not the actual failure cause even if they briefly drift — gradle-daemon-jvm.properties has toolchainUrl.* entries for the foojay Disco API, so Gradle auto-downloads a matching JDK regardless of the JDK setup-java installed (needs the org.gradle.toolchains.foojay-resolver-convention plugin in settings.gradle.kts, which is applied). Don't assume a JDK mismatch is the root cause without other evidenceIf you do suspect it, search the log for Downloading / Unpacking JDK lines from the toolchain auto-provisioning, or a No matching toolchains found error, before concluding this is the cause
gradle: Execution failed for task ':...:compileDebugKotlin' or similar per-module compile taskCompile error scoped to one moduleNarrow reproduction locally: ./gradlew :module:path:compileDebugKotlin
Show full SKILL.md (211 more words)Show less

If a failure doesn't match this table, treat the filtered error:/FAILURE: line as authoritative and reason from there — don't guess.

Step 5 — Reproduce and propose a fix

  1. Where possible, reproduce locally with the same Gradle task the workflow ran (see run: steps in the workflow YAML) before proposing a fix — this repo's CI failures are almost always reproducible with ./gradlew <same task>.
  2. State the root cause in one sentence, citing the exact log line.
  3. Propose a minimal diff:
    • Workflow YAML bug → confirm with the user before editing .github/workflows/*.yml (CI/CD pipeline changes are a shared-system change — don't push them unasked).
    • Application/build code bug → fix the code per AGENTS.md conventions and run the spotless-fix skill if it's formatting-related.
  4. Never "fix" a failure by hiding it — no removing the failing step, no continue-on-error: true, no || true, no disabling a check — unless the user explicitly asks for that. The goal is root cause, not a green checkmark.

Verification

  • Identified the specific failing step (not just "the run failed")
  • Found the actual error:/FAILURE: line, not just generic exit-code noise
  • Root cause stated as one sentence with a cited log line
  • Fix reproduces/resolves locally where the failure type allows it (e.g. a Gradle task)
  • Fix addresses the cause, not just silences the check

© MartinStyk, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/analyze-ci-failure of MartinStyk/apk-analyzer.

Open the folder on GitHubat commit d807559

Compare with similar skills

Analyze CI Failure 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.

Analyze CI Failure compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Analyze CI Failure this skillMartinStyk/apk-analyzer370—~1.9kAutomated safety check: PassGPL-3.0
CI Failure Triage and RepairChachamaru127/claude-code-harness3.2k1 repos~1.1kAutomated safety check: NotesMIT
ONNX Runtime CI Managementmicrosoft/onnxruntime22k—~4.1kAutomated safety check: PassMIT
CI Watchdoglatitude-dev/latitude-llm4.7k—~1.6kAutomated safety check: PassMIT
Megatron-LM CI Failure TriageNVIDIA/Megatron-LM18k—~1.6kAutomated safety check: PassApache-2.0
Swig CI Reproswig/swig6.3k—~1.2kAutomated safety check: PassCustom licence

Similar skills

  • CI Failure Triage and Repair

    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.

    3.2k GitHub starsUsed in 1 repo~1.1k tokens
    DevOps & CloudAuto-check: notes
  • ONNX Runtime CI Management

    microsoft/onnxruntime

    Official

    Triggers, re-runs and unblocks the CI checks on an ONNX Runtime pull request, after diagnosing whether a failure is transient or needs a code change.

    22k GitHub stars~4.1k tokensUpdated today
    DevOps & CloudAuto-check passed
  • CI Watchdog

    latitude-dev/latitude-llm

    Continuously monitor GitHub PR CI checks and automatically fix failures until all checks pass.

    4.7k GitHub stars~1.6k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Official

    Investigates a failing GitHub Actions run or job for Megatron-LM, finds the root cause plus the PR and test author involved, and files a structured bug issue.

    18k GitHub stars~1.6k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Swig CI Repro

    swig/swig

    Reproduce a GitHub Actions Linux CI failure locally when it does not happen on your machine: a podman/docker image that mirrors the ubuntu-22.04 runner by reusing the real Tools/CI-linux-.sh install…

    6.3k GitHub stars~1.2k tokensUpdated 4 days ago
    DevOps & CloudAuto-check passed
  • Diagnoses and fixes failing GitHub Actions runs by identifying the failure, fetching only the relevant logs, finding the root cause and reproducing it locally.

    1.8k GitHub stars~1.9k tokensUpdated 9 days ago
    DevOps & CloudAuto-check passed

More from MartinStyk/apk-analyzer

All 18 skills in this repo
  • Triage Crashes

    MartinStyk/apk-analyzer

    A skill your agent uses to review production Crashlytics crashes and non-fatals for the latest release and file a GitHub issue for each one that isn't tracked yet.

    370 GitHub stars~4.3k tokensUpdated 5 days ago
    Auto-check passed
  • Capture App Flow Media

    MartinStyk/apk-analyzer

    A skill your agent uses to record or convert ApkAnalyzer app flows into screenshots or GIFs for the README or product docs.

    370 GitHub stars~1.7k tokensUpdated 5 days ago
    Auto-check passed
  • Create Compose Component

    MartinStyk/apk-analyzer

    A skill your agent uses when creating a new reusable Compose UI component that should live in core:ui-library.

    370 GitHub stars~885 tokensUpdated 5 days ago
    Auto-check passed
  • Create Core Module

    MartinStyk/apk-analyzer

    A skill your agent uses when creating a new core or shared library module for domain logic, data access, repositories, managers, or utilities.

    370 GitHub stars~1.7k tokensUpdated 5 days ago
    Auto-check passed
  • Create Feature Module

    MartinStyk/apk-analyzer

    A skill your agent uses when creating a new feature module, screen, or feature area.

    370 GitHub stars~1.6k tokensUpdated 5 days ago
    Auto-check passed
  • Fix Crash

    MartinStyk/apk-analyzer

    A skill your agent uses to fix a specific production crash or non-fatal — pulling its Crashlytics data, finding the linked GitHub issue, root-causing it, reproducing it, fixing it, and verifying the…

    370 GitHub stars~2.5k tokensUpdated 5 days ago
    Auto-check passed

Works with

Categories

Questions about Analyze CI Failure

What does Analyze CI Failure do?

A skill your agent uses to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix. Analyze CI Failure is an agent skill from MartinStyk/apk-analyzer. Use to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix.

When should I use Analyze CI Failure?

Analyze CI Failure fits situations like: check GitHub Actions build status; diagnose why a workflow run failed and propose a fix.

How do I install Analyze CI Failure in Claude Code?

Run `npx skills add MartinStyk/apk-analyzer --skill analyze-ci-failure -a claude-code`. Or copy the skill folder (.claude/skills/analyze-ci-failure in MartinStyk/apk-analyzer) into .claude/skills/analyze-ci-failure in your project. Claude Code loads it when a task matches its description.

How do I install Analyze CI Failure in Codex?

Run `npx skills add MartinStyk/apk-analyzer --skill analyze-ci-failure -a codex`. Or copy the skill folder (.claude/skills/analyze-ci-failure in MartinStyk/apk-analyzer) into .agents/skills/analyze-ci-failure in your project. Codex loads it when a task matches its description.

Can I use Analyze CI Failure in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MartinStyk/apk-analyzer --skill analyze-ci-failure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/analyze-ci-failure, .gemini/skills/analyze-ci-failure, .github/skills/analyze-ci-failure and .opencode/skills/analyze-ci-failure in your project.

What does Analyze CI Failure need to run?

Going by SKILL.md and its folder, Analyze CI Failure needs the command-line tools its instructions call (gh) and credentials named FIREBASE_TOKEN, SIGN_KEY, SIGN_KEY_STORE_PASSWORD and SIGN_KEY_PASSWORD. Our summary lists: A credential in FIREBASE_TOKEN; A credential in SIGN_KEY.

Does Analyze CI Failure access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Analyze CI Failure safe to install?

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. Review the folder before installing.

What licence does Analyze CI Failure use?

Analyze CI Failure is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Analyze CI Failure use?

About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Analyze CI Failure?

Skills that share tags, products or a category with Analyze CI Failure: CI Failure Triage and Repair (Chachamaru127/claude-code-harness, 3.2k stars), ONNX Runtime CI Management (microsoft/onnxruntime, 22k stars), CI Watchdog (latitude-dev/latitude-llm, 4.7k stars) and Megatron-LM CI Failure Triage (NVIDIA/Megatron-LM, 18k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Analyze CI Failure?

MartinStyk (a GitHub user) maintains it in MartinStyk/apk-analyzer, which has 370 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 5, 2026.

Source: MartinStyk/apk-analyzer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.