ci-triage
Skill122 starsChanged 18 days agoApache-2.0View on GitHub
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.
17 other projects use a version of this.
Adopted by
Most recently taken up by
- TanKaizokuO/claude-skillstheir own version, first seen Nov 8, 2026
- wannanbigpig/ai-engineering-collaborationtheir own version, first seen Nov 6, 2026
- me-cedric/agent-compasstheir own version, first seen Nov 1, 2026
- juzorei/ci-autopsytheir own version, first seen Nov 1, 2026
- andymai/brepjstheir own version, first seen Oct 9, 2026
- hyperledger-cacti/cactitheir own version, first seen Oct 9, 2026
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 17
- NewFuture/DDNS★ 4.7ksame name
- nubjs/nub★ 4.4ksame name
- Mentra-Community/MentraOS★ 2.4ksame name
- levy-street/world-of-claudecraft★ 2.3ksame name
- ls1intum/Artemis★ 829same name
- hyperledger-cacti/cacti★ 412same name
- andymai/brepjs★ 140same name
- fair-acc/gnuradio4★ 117same name
- 5throck/ai-workspace-standards★ 25same name
- syndicalt/zaxy★ 17same name
7 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- project-conventionsSkill
- sarif-unused-symbolsSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 1 is distinctive, and 5 are very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
no report, job cancelled or exit without summary = evidence loss (JVM exit, timeout).
- Very specific: line 42
Write the packet from references/packet-template.md: command, then verbatim output, per finding.
- Very specific: line 43
Add the README row (mapping table, overview table, cross-cutting notes when a pattern spans refs).
- Very specific: line 44
Add new families or occurrences to ci-triage/known-families.md.
- Very specific: line 52
Do not compile or start Canton unless asked.
- Very specific: line 54
Commit the packet on the triage branch with [skip ci] and -s.
“Common” is measured: kept by at least 6 in 10 of the 13 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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
- 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. - Fetch the job log by job id (
references/recipes.mdsection 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@timestamplines 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.
- Duplicate check BEFORE deep analysis: compare the flagged line and the shard's suite list against
ci-triage/known-families.mdon 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. - Establish what runs: canton pin from
nix/canton-sources.jsonat the run's sha, never fromcanton/. For Canton behaviour cite the jar (references/recipes.mdsection 6), and state the version next to every source citation. - Download the artifact gzipped to
log/<ref>/<artifact>/(gitignored), stream withzcat. Build the suite timeline fromcanton_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. - 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. - 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 toci-triage/known-families.md. - 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.mdsection 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). - 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.
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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

