Skip to content

pipeline-grouping

Groups failed CI/CD pipeline jobs by shared root cause. Reads the preprocessed errors.txt for every failed job listed in the job manifest, identifies distinct failure patterns, and clusters jobs whose errors point to the same underlying cause — merging across collections and pipeline actions when the errors match, splitting within a collection when they differ (biasing toward splitting when uncertain, since each group spawns one downstream RCA task).

Rather than emitting JSON directly, the skill drives the grouper.py CLI to build groups incrementally in a work file and then finalizes it, which validates that every expected job ID is assigned to exactly one group before writing grouping.json. If open Jira tickets are provided in recent-tickets.json, it also checks each group against them and writes dedup-results.json for matches, so recurring failures reuse an existing ticket instead of filing a duplicate.

Inputs (from /workspace/): _context/grouping-context.json, jobs/<id>-<name>/errors.txt, optional recent-tickets.json. Outputs: grouping.json, optional dedup-results.json.

Plugin: pipeline-skills | Internal

Contract

Skill Contract canonical-skill-v1

Read preprocessed error files for all failed jobs, identify distinct failure patterns, and group jobs by shared root cause into grouping.json.

Identity

Functions
analyze
Success
  • Produces grouping.json with all expected job IDs assigned to groups.
  • Each group has a human-readable summary and representative error messages.

Optimization Targets

task_success deterministic

Invariants

Must Preserve
  • Every expected job ID must appear in exactly one group.
  • Do not modify job trace logs or error files.
Fixed Context
toolsRead, Bash, Grep, Glob
clipython3
knowledgetask_inputtask_private

Traceability

Diagram

pipeline-grouping diagram

Usage

Internal skill (user-invocable: false) — invoked by the pipeline-failure-analyzer orchestrator inside the Claude Code container, not run interactively. The orchestrator prepares the /workspace/ inputs and reads back grouping.json.