Skip to content
Back to skills

Check Pipeline

ASecurity

Check GitLab CI pipeline status and investigate failures. Use when user asks about CI status, pipeline failures, or wants to debug failed jobs.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
toolsbashgitapisecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add David-Li0406/meta-skill-evloving --skill check-pipeline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Check Pipeline?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Check Pipeline
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/david-li0406-check-pipeline/badge)](https://www.skillsdirectory.com/skills/david-li0406-check-pipeline)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: check-pipeline
description: Check GitLab CI pipeline status and investigate failures. Use when user asks about CI status, pipeline failures, or wants to debug failed jobs.
allowed-tools:
  - Bash(~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh:*)
  - Bash(glab ci status:*)
  - Bash(glab mr list:*)
  - Bash(glab mr view:*)
  - Bash(git rev-parse:*)
  - Bash(git branch:*)
  - Read
  - Grep
---

# Check GitLab CI Pipeline

Investigate GitLab CI pipeline status and debug failures.

## Key Concept: MR Pipelines vs Branch Pipelines

GitLab often creates **two pipelines** for merge requests:

1. **Branch Pipeline** (`ref: branch-name`)
   - Triggered by pushing to the branch
   - Often runs only security scans or limited tests
   - Status shown: "success" even when MR pipeline fails

2. **MR Pipeline** (`ref: refs/merge-requests/<number>/head`)
   - Triggered by the merge request
   - Runs the full test suite from `.gitlab-ci.yml`
   - **This is the one that matters for merge readiness**

The helper script filters out `source: "external"` pipelines (security scans) automatically.

## Helper Script

Use the allowlisted helper script for all API calls:

```bash
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh <command> [args]
```

Commands:
- `mr-pipelines <mr-number>` - List pipelines for an MR
- `branch-pipelines [branch]` - List pipelines for a branch (defaults to current)
- `pipeline-jobs <pipeline-id>` - List all jobs in a pipeline
- `failed-jobs <pipeline-id>` - List only failed jobs
- `job-trace <job-id>` - Get job log output
- `job-info <job-id>` - Get job metadata
- `pipeline-info <pipeline-id>` - Get pipeline metadata

## Investigation Workflow

### Step 1: Find the MR

```bash
# Get current branch
git rev-parse --abbrev-ref HEAD

# Find MR for this branch
glab mr list --source-branch $(git rev-parse --abbrev-ref HEAD)
```

### Step 2: Get MR Pipelines

```bash
# List pipelines for the MR (MR number from step 1)
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh mr-pipelines <mr-number>
```

Look at the output:
- Find pipelines where `ref` starts with `refs/merge-requests/` - these are MR pipelines
- Check the `status` field: `success`, `failed`, `running`, `pending`
- Note the `id` of the failed pipeline

### Step 3: Find Failed Jobs

```bash
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh failed-jobs <pipeline-id>
```

This shows failed job names and URLs.

### Step 4: Get Job Logs

```bash
# Get full trace (may be large)
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-trace <job-id>

# Get last 200 lines
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-trace <job-id> | tail -200

# Search for errors
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-trace <job-id> | grep -E "(FAIL|Error|error:|failed)" | head -30
```

### Step 5: Get Job Details

```bash
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-info <job-id>
```

Returns: `id`, `name`, `status`, `failure_reason`, `started_at`, `finished_at`, `duration`, `web_url`

## Common Patterns

### Quick Status Check

```bash
glab ci status
```

Shows current branch pipeline status (but remember: this may show branch pipeline, not MR pipeline).

### Check if Branch Pipeline Passed but MR Pipeline Failed

This is common! The branch pipeline may run only security scans while the MR pipeline runs full tests.

```bash
# Compare branch vs MR pipelines
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh branch-pipelines
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh mr-pipelines <mr-number>
```

### Find Test Failures in Logs

Job logs can be large and truncated. Search strategically:

```bash
# Look for test failures
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-trace <job-id> | grep -E "(FAIL|✗|×|Test Files.*failed)" | head -20

# Look for build errors
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-trace <job-id> | grep -E "(Error:|error:|ELIFECYCLE|exit code)" | head -20

# Get context around errors
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-trace <job-id> | grep -B5 -A10 "FAIL" | head -50
```

### Check Pipeline Source

```bash
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh pipeline-info <pipeline-id> | jq -r '.source'
```

Common sources:
- `push` - triggered by git push
- `merge_request_event` - triggered by MR
- `external` - security scan (Semgrep, etc.) - usually ignore these

## Integration Tests vs Unit Tests

In this monorepo:
- **Unit tests**: Run in CI and should pass
- **Integration tests**: Connect to real services, can be flaky, may be configured to not block

If integration tests fail but unit tests pass, check if integration test failures block the pipeline.

## Retry a Pipeline

If you suspect a flaky failure, push an empty commit to retrigger:

```bash
git commit --allow-empty -m "Retrigger CI"
git push
```

Then watch the new pipeline.

## Example Session

```
User: "CI failed, can you check what went wrong?"

Claude: Let me check the pipeline status for your branch.

# Find the MR
glab mr list --source-branch $(git rev-parse --abbrev-ref HEAD)
# Output: !4674 modernize-document-context

# Get MR pipelines
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh mr-pipelines 4674
# Output shows pipeline 4467641 failed

# Find failed jobs
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh failed-jobs 4467641
# Output: unit tests: failed - https://...

# Get logs
~/.claude/skills/check-pipeline/scripts/glab-pipeline.sh job-trace 62708639 | tail -200
# Analyze the failure...
```

Files in this skill

  • SKILL.md5.5 KB
  • scripts/glab-pipeline.sh4.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…