Agent skill

CI Triage

by canton-network in canton-network/splice

Triage a failed splice GitHub Actions job (cn-test-failures ref) into a reproducible evidence packet - fetch job log and artifact, isolate the flagged lines, check the known flake families for…

Apache-2.0Auto-check passedTesting & QA

Install CI Triage

skills CLI
$ npx skills add canton-network/splice --skill ci-triage -a claude-code

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

GitHub CLI
$ gh skill install canton-network/splice ci-triage --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/canton-network/splice.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/ci-triage .claude/skills/ci-triage && 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
ci-triage
GitHub stars
118
Token cost
~1.4k tokens
SKILL.md length
730 words
Files
4 (incl. references)
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Triage a failed splice GitHub Actions job (cn-test-failures ref) into a reproducible evidence packet - fetch job log and artifact, isolate the flagged lines, check the known flake families for…

  • Works in 9 steps: Record the tuple verbatim. Never infer… → Fetch the job log by job id… → Duplicate check BEFORE deep analysis:… → …
  • Triage GHA run ..
  • SKILL.md covers Procedure and Anti-patterns
  • Calls gh, git and prettier

What it does

CI Triage is an agent skill from canton-network/splice. Triage a failed splice GitHub Actions job (cn-test-failures ref) into a reproducible evidence packet - fetch job log and artifact, isolate the flagged lines, check the known flake families for duplicates, find the root cause with commands and verbatim log output, record it in the shared triage branch and, when a small test-side fix exists, put it on a branch. Use for "triage GHA run ... my ref ...", "is this a dup", "root cause of shard failure", checkErrors WARN/ERROR failures, integration test flakes.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/conventions.md`, `references/packet-template.md` and `references/recipes.md`).

It sits in Testing & QA, covering Failing and flaky tests, CI/CD and Root cause analysis. It works with GitHub Actions. The licence is Apache-2.0.

When your agent uses it

  • Triage GHA run ..
  • Tasks that involve Failing and flaky tests
  • Tasks that involve CI/CD

Example prompts

  • “triage GHA run ... my ref ...”
  • “is this a dup”
  • “root cause of shard failure”
  • “/ci-triage”

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. Record the tuple verbatim. Never infer which ref belongs to which job by elimination. If a run has more
  2. Fetch the job log by job id (references/recipes.md section 1). Classify in one pass
  3. Duplicate check BEFORE deep analysis: compare the flagged line and the shard's suite list against
  4. Establish what runs: canton pin from nix/canton-sources.json at the run's sha, never from canton/.
  5. Download the artifact gzipped to log/// (gitignored), stream with zcat.
  6. Decide flake versus real, and where the fix belongs (test, splice app, Canton, infra). For a candidate
  7. Write the packet from references/packet-template.md: command, then verbatim output, per finding.
  8. Fix, only when it is test-side and small enough to review in one screen: one branch per PR off
  9. Commit the packet on the triage branch with [skip ci] and -s. Report: one line per ref with

What it can do on your machine

Read from SKILL.md and the folder at commit a58ac6d. 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
    • git
    • prettier

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

  • Network

    No URLs in SKILL.md. Its commands use gh 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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

CI Triage loads about 1.4k tokens when it runs, and up to ~3.6k if it reads all its reference files. Until then it costs about 130 tokens; SKILL.md has 730 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~130
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.6k

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 canton-network/splice at commit a58ac6d, republished under its Apache-2.0 licence (© canton-network). 730 words, ~1,350 tokens.

Download SKILL.mdSave it as .claude/skills/ci-triage/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
ci-triage
description
Triage a failed splice GitHub Actions job (cn-test-failures ref) into a reproducible evidence packet - fetch job log and artifact, isolate the flagged lines, check the known flake families for duplicates, find the root cause with commands and verbatim log output, record it in the shared triage branch and, when a small test-side fix exists, put it on a branch. Use for "triage GHA run ... my ref ...", "is this a dup", "root cause of shard failure", checkErrors WARN/ERROR failures, integration test flakes.

CI failure triage for splice

Input: one or more (GitHub run URL or id, job name, cn-test-failures ref) tuples from the user. A ref is an issue number in the failure tracker DACH-NY/cn-test-failures, readable with a GitHub login that has DACH-NY access. Output: one evidence packet per ref in ci-triage/, a row in ci-triage/README.md, a duplicate verdict, and optionally a fix branch. Everything you write must be reproducible by someone else: every claim is a command plus its verbatim output. Read references/conventions.md once before starting; it overrides defaults.

The skill lives on main; the triage data does not. Packets, ci-triage/README.md, ci-triage/HANDOVER.md and the flake family catalogue ci-triage/known-families.md live on the shared triage branch, which is never merged. If it is not checked out, ask the user which triage branch is current before writing anything.

Procedure

  1. Record the tuple verbatim. Never infer which ref belongs to which job by elimination. If a run has more failed jobs than refs, list all failed jobs (gh run view <run> --json jobs) and leave the mapping open until the user states it. If you cannot read the tracker, ask for the run URL rather than guess.
  2. Fetch the job log by job id (references/recipes.md section 1). Classify in one pass:
    • Tests: succeeded N, failed 0 + contains problems = checkErrors failure: the only evidence is the flagged log lines. The console masks {} as *** and prints every ignored line with the suffix (ignore this line in check-sbt-output.sh); the real problems are the @timestamp lines WITHOUT it.
    • *** FAILED *** = assertion or command failure: take the failing clue and stack head.
    • no report, job cancelled or exit without summary = evidence loss (JVM exit, timeout); say so.
  3. Duplicate check BEFORE deep analysis: compare the flagged line and the shard's suite list against ci-triage/known-families.md on the triage branch. A match still needs the confirming grep listed there (for example the multi-host clue 1-15 s before an ACS mismatch period). Say "duplicate of X" only after that grep.
  4. Establish what runs: canton pin from nix/canton-sources.json at the run's sha, never from canton/. For Canton behaviour cite the jar (references/recipes.md section 6), and state the version next to every source citation.
  5. Download the artifact gzipped to log/<ref>/<artifact>/ (gitignored), stream with zcat. Build the suite timeline from canton_network_test.clog.gz, then correlate flagged timestamps to it and to the canton log. Chase "what is it waiting on, and why" until the cause is a concrete event with a timestamp; do not stop at the timeout symptom.
  6. Decide flake versus real, and where the fix belongs (test, splice app, Canton, infra). For a candidate fix that already exists on main, check git merge-base --is-ancestor <sha> origin/<branch>: a missing backport is the most common resolution for release-line failures.
  7. Write the packet from references/packet-template.md: command, then verbatim output, per finding. Add the README row (mapping table, overview table, cross-cutting notes when a pattern spans refs). Add new families or occurrences to ci-triage/known-families.md.
  8. Fix, only when it is test-side and small enough to review in one screen: one branch per PR off origin/main (or the release line for a backport, cherry-pick -x -s), in its own worktree so the triage branch stays checked out (references/recipes.md section 8), named <user>/fix-<ref>-<slug> (backports: <user>/backport-<ref>-<pr>-<release-line>), where <user> is your own short git prefix, so the branch carries the cn-test-failures ref; when one branch fixes several refs, use the parent ref and list the others in the README row. Single-subject commit with a CI tag and DCO sign-off, no code comments, no AI attribution. State plainly what was and was not verified. Do not compile or start Canton unless asked; cheap checks only (scalafmtCheck, prettier --check, config greps).
  9. Commit the packet on the triage branch with [skip ci] and -s. Report: one line per ref with duplicate verdict and fix state, then the branch tips.
Show full SKILL.md (92 more words)Show less

Anti-patterns

  • Proposing an ignore pattern for a WARN whose cause is not understood. Ignore patterns hide the only signal on shards where the underlying bug does not wedge (see 10010 in the catalogue).
  • Citing canton/ source line numbers: it is a stale rsync copy.
  • Treating the suite list of a checkErrors shard as the culprit: the WARN's suite is the one running at the flagged timestamp, and commitment or ack WARNs often land minutes after the causing step.
  • Pasting only conclusions. A packet without the commands that produced them is not accepted.

© canton-network, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in .claude/skills/ci-triage of canton-network/splice.

  • SKILL.md
  • references/conventions.md
  • references/packet-template.md
  • references/recipes.md

Open the folder on GitHubat commit a58ac6d

Compare with similar skills

CI Triage 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.

CI Triage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
CI Triage this skillcanton-network/splice118—~1.4kAutomated safety check: PassApache-2.0
Analyze Test Runmicrosoft/GitHub-Copilot-for-Azure255—~2.5kAutomated safety check: PassMIT
GreptimeDB Fuzz CI Failure InvestigationGreptimeTeam/greptimedb6.7k—~4.4kAutomated safety check: PassApache-2.0
CI Failure Triage and RepairChachamaru127/claude-code-harness3.2k1 repos~1.1kAutomated safety check: NotesMIT
Megatron-LM CI Failure TriageNVIDIA/Megatron-LM18k—~1.6kAutomated safety check: PassApache-2.0
CI Fixwarpdotdev/oz-skills825—~790Automated safety check: PassMIT

Similar skills

  • Analyze Test Run

    microsoft/GitHub-Copilot-for-Azure

    Official

    Analyze a GitHub Actions integration test run and produce a skill invocation report with failure root-cause issues.

    255 GitHub stars~2.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Diagnoses a failed GreptimeDB fuzz CI job by pulling its GitHub Actions logs and fuzz artifacts, then matching the evidence to the local source code.

    6.7k GitHub stars~4.4k tokensUpdated today
    Testing & QAAuto-check passed
  • 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
  • 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
  • CI Fix

    warpdotdev/oz-skills

    Diagnose and fix GitHub Actions CI failures. An agent skill from warpdotdev/oz-skills.

    825 GitHub stars~790 tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Analyze Skill Issues

    microsoft/GitHub-Copilot-for-Azure

    Official

    Query the integration-test storage account to find why a specific skill's tests are failing.

    255 GitHub stars~2.1k tokensUpdated today
    Testing & QAAuto-check passed

More from canton-network/splice

  • Project Conventions

    canton-network/splice

    Repo-wide coding conventions enforced by pre-commit (copyright headers, scalafmt, Daml warts, TS formatting) so generated code matches on the first pass.

    118 GitHub stars~845 tokensUpdated today
    Auto-check passed

Works with

Questions about CI Triage

What does CI Triage do?

Triage a failed splice GitHub Actions job (cn-test-failures ref) into a reproducible evidence packet - fetch job log and artifact, isolate the flagged lines, check the known flake families for…. CI Triage is an agent skill from canton-network/splice. Triage a failed splice GitHub Actions job (cn-test-failures ref) into a reproducible evidence packet - fetch job log and artifact, isolate the flagged lines, check the known flake families for duplicates, find the root cause with commands and verbatim log output, record it in the shared triage branch and, when a small test-side fix exists, put it on a branch.

When should I use CI Triage?

CI Triage fits situations like: triage GHA run .; tasks that involve Failing and flaky tests; tasks that involve CI/CD.

How do I install CI Triage in Claude Code?

Run `npx skills add canton-network/splice --skill ci-triage -a claude-code`. Or copy the skill folder (.claude/skills/ci-triage in canton-network/splice) into .claude/skills/ci-triage in your project. Claude Code loads it when a task matches its description.

How do I install CI Triage in Codex?

Run `npx skills add canton-network/splice --skill ci-triage -a codex`. Or copy the skill folder (.claude/skills/ci-triage in canton-network/splice) into .agents/skills/ci-triage in your project. Codex loads it when a task matches its description.

Can I use CI Triage 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 canton-network/splice --skill ci-triage -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-triage, .gemini/skills/ci-triage, .github/skills/ci-triage and .opencode/skills/ci-triage in your project.

What does CI Triage need to run?

Going by SKILL.md and its folder, CI Triage needs the command-line tools its instructions call (gh, git and prettier).

Does CI Triage access the network?

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

Is CI Triage 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 CI Triage use?

CI Triage is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does CI Triage use?

About 1.4k tokens (SKILL.md is roughly 5.4k 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 2.3k tokens, read only when the agent opens those files.

What are the alternatives to CI Triage?

Skills that share tags, products or a category with CI Triage: Analyze Test Run (microsoft/GitHub-Copilot-for-Azure, 255 stars), GreptimeDB Fuzz CI Failure Investigation (GreptimeTeam/greptimedb, 6.7k stars), CI Failure Triage and Repair (Chachamaru127/claude-code-harness, 3.2k 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 CI Triage?

canton-network (a GitHub organization) maintains it in canton-network/splice, which has 118 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.

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