Agent skill

Manage Labels

by openshift-eng in openshift-eng/ai-helpers

Create, update, or delete Sippy job run Labels (the human-readable tags applied by Symptoms) via the authenticated Sippy API

Apache-2.0Auto-check passed

Install Manage Labels

skills CLI
$ npx skills add openshift-eng/ai-helpers --skill manage-labels -a claude-code

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

GitHub CLI
$ gh skill install openshift-eng/ai-helpers manage-labels --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/openshift-eng/ai-helpers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/ci/skills/manage-labels .claude/skills/manage-labels && 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
manage-labels
GitHub stars
120
Token cost
~1.9k tokens
SKILL.md length
756 words
Files
3
Skills in repo
118
Repo updated
First seen
Licence
Apache-2.0

At a glance

Create, update, or delete Sippy job run Labels (the human-readable tags applied by Symptoms) via the authenticated Sippy API

  • Works in 4 steps: Obtain Authentication Token → Create a Label → Update a Label → …
  • SKILL.md covers When to Use This Skill, Prerequisites, Implementation Steps and API Details, plus 2 more sections
  • Runs Python scripts from its folder; calls python3; reaches api.cr.j7t7.p1.openshiftapps.com and sippy-auth.dptools.openshift.org; needs SIPPY_TOKEN

What it does

Manage Labels is an agent skill from openshift-eng/ai-helpers. Create, update, or delete Sippy job run Labels (the human-readable tags applied by Symptoms) via the authenticated Sippy API

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `manage_labels.py` and `test_manage_labels.py`).

It works with Python. The repository describes itself as: Developer productivity tools for Claude Code & other AI assistants. The licence is Apache-2.0.

Example prompts

  • “/manage-labels”

Requirements

  • Python 3
  • A credential in SIPPY_TOKEN

Workflow steps

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

  1. Obtain Authentication Token
  2. Create a Label
  3. Update a Label
  4. Delete a Label

What it can do on your machine

Read from SKILL.md and the folder at commit a627176. 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

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.cr.j7t7.p1.openshiftapps.com
    • sippy-auth.dptools.openshift.org

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

  • Credentials

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

    • SIPPY_TOKEN

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

Context cost

Manage Labels loads about 1.9k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 756 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~35
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 openshift-eng/ai-helpers at commit a627176, republished under its Apache-2.0 licence (© openshift-eng). 756 words, ~1,866 tokens.

Download SKILL.mdSave it as .claude/skills/manage-labels/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
manage-labels
description
Create, update, or delete Sippy job run Labels (the human-readable tags applied by Symptoms) via the authenticated Sippy API

Manage Labels

Sippy Symptoms are known-failure signatures for OpenShift CI. A symptom is a rule made of a file pattern (a glob over a CI job run's artifact files, e.g. **/build-log.txt) and a matcher (string = substring, regex = regular expression, none = file merely exists, cel = a compound CEL expression over other label names). When a symptom matches a job run's artifacts, Sippy applies one or more Labels — human-readable tags like InfraFailure — to that run. Labels appear in the Sippy UI and Spyglass and help everyone quickly recognize known failure modes without re-debugging them. You do not need any prior Sippy knowledge to use this skill.

Labels must exist before a symptom can reference them, so create labels first when building a new symptom.

When to Use This Skill

Use this skill when you need to:

  • Create a new label before creating a symptom that applies it (see manage-symptoms)
  • Fix a label's title or explanation
  • Associate one or more Jira issues with a label
  • Hide a label from certain UI contexts (Spyglass, metrics, jaq-options)
  • Remove an obsolete label

Prerequisites

  1. OpenShift CLI Authentication: Required for authenticating to the sippy-auth API

    • Must be logged into the DPCR cluster via oc login
    • Cluster API: https://api.cr.j7t7.p1.openshiftapps.com:6443
    • Use the oc-auth skill to obtain the Bearer token
  2. Python 3: Python 3.6 or later

    • Check: python3 --version
    • Uses only standard library (no external dependencies)

Implementation Steps

Step 1: Obtain Authentication Token

Use the oc-auth skill to obtain a Bearer token from the DPCR cluster:

bash
# Get token from the DPCR cluster context
# The oc-auth skill's curl_with_token.sh uses this cluster for sippy-auth
DPCR_CLUSTER="https://api.cr.j7t7.p1.openshiftapps.com:6443"

# Find the oc context for the DPCR cluster and get the token
CONTEXT=$(oc config get-contexts -o name 2>/dev/null | while read -r ctx; do
  server=$(oc config view -o jsonpath="{.clusters[?(@.name=='$(oc config view -o jsonpath="{.contexts[?(@.name=='$ctx')].context.cluster}" 2>/dev/null)')].cluster.server}" 2>/dev/null || echo "")
  server_clean=$(echo "$server" | sed -E 's|^https?://||')
  if [ "$server_clean" = "api.cr.j7t7.p1.openshiftapps.com:6443" ]; then
    echo "$ctx"
    break
  fi
done)

if [ -z "$CONTEXT" ]; then
  echo "Error: Not logged into DPCR cluster. Please run: oc login $DPCR_CLUSTER"
  exit 1
fi

export SIPPY_TOKEN=$(oc whoami -t --context="$CONTEXT" 2>/dev/null)
if [ -z "$SIPPY_TOKEN" ]; then
  echo "Error: Failed to get token. Please re-authenticate to DPCR cluster."
  exit 1
fi

Prefer exporting SIPPY_TOKEN as above rather than passing --token on the command line — command-line arguments are visible in process listings. --token still works and takes precedence over the environment variable.

Step 2: Create a Label
bash
python3 plugins/ci/skills/manage-labels/manage_labels.py create \
  --title "Cluster DNS Flake" \
  --explanation "DNS lookups inside the cluster intermittently time out." \
  --bugs "OCPBUGS-12345,TRT-2896"

The label id is generated from the title by the server if you omit --id. Pass --id on create only if you need a specific identifier (max 80 characters).

Step 3: Update a Label

Only pass the flags you want to change — the script fetches the existing label and merges, because the API's PUT is a full replacement:

bash
python3 plugins/ci/skills/manage-labels/manage_labels.py update \
  --id ClusterDNSFlake \
  --explanation "DNS lookups inside the cluster intermittently time out. Usually caused by node-local DNS cache restarts."

The update request always sends the complete label definition. Omitted fields are copied from the current definition. Pass --bugs "" to explicitly clear all associated Jira issues.

To hide a label from certain UI contexts:

bash
python3 plugins/ci/skills/manage-labels/manage_labels.py update \
  --id ClusterDNSFlake \
  --hide-display-contexts "spyglass,metrics"
Step 4: Delete a Label

Before deleting, you MUST show the label to the user (fetch it with the list-symptoms skill: python3 plugins/ci/skills/list-symptoms/list_symptoms.py --labels --id <id> --format summary) and get their explicit confirmation. Never run delete without the user confirming the specific label.

bash
python3 plugins/ci/skills/manage-labels/manage_labels.py delete \
  --id ClusterDNSFlake

Arguments:

  • action: create, update, or delete (positional, required)

Options:

  • --token <token>: Bearer token from the oc-auth skill (optional if the SIPPY_TOKEN environment variable is set, which is preferred — argv is visible in process listings; --token takes precedence)
  • --id <id>: Label ID (required for update/delete; optional for create)
  • --title <text>: Human-readable label title (required for create)
  • --explanation <text>: Markdown explanation of the label
  • --bugs <list>: Comma-separated Jira issue keys; whitespace and duplicates are removed
  • --hide-display-contexts <list>: Comma-separated subset of spyglass,metrics,jaq-options
  • --format json|summary: Output format (default: json)
Show full SKILL.md (254 more words)Show less

API Details

Base URL (writes): https://sippy-auth.dptools.openshift.org/api/jobs/labels

  • Create: POST /api/jobs/labels
  • Update: PUT /api/jobs/labels/{id} (full replacement — the script fetches the existing label and merges your changes, so only pass flags you want to change)
  • Delete: DELETE /api/jobs/labels/{id}

Authentication: Authorization: Bearer <token> from the DPCR cluster.

Label fields:

FieldDescription
idImmutable identifier, max 80 characters; generated from the title if omitted on create
label_titleHuman-readable title; must be unique
explanationMarkdown explanation of what the label means
bugsJira issue keys associated with the label, such as OCPBUGS-12345
hide_display_contextsOptional subset of spyglass, metrics, jaq-options — UI contexts where the label is hidden

Error Handling

  • 401/403: Token missing or expired — refresh it via the oc-auth skill.
  • 501: You hit the read-only Sippy instance with a write; make sure the sippy-auth base URL is used (the script already does).
  • 400: Server-side validation failure — the server's message is shown in the detail field of the output.
  • Client-side validation: Missing title, over-long ID, invalid Jira keys, or invalid hide_display_contexts values are caught locally and reported before any request is sent (exit 1). Jira keys are checked syntactically without a Jira lookup.
  • Concurrent edits: The update flow is read-merge-replace with no server-side concurrency control, so near-simultaneous edits can overwrite each other — re-check the label after updating if others may be editing.

Exit Codes:

  • 0: Success
  • 1: Validation error, API error, or network error

See Also

  • Related Skill: oc-auth (provides authentication tokens for sippy-auth)
  • Related Skill: list-symptoms (list/inspect labels and symptoms, no auth needed)
  • Related Skill: manage-symptoms (create/update/delete symptoms that apply labels)

© openshift-eng, 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 2 other files in plugins/ci/skills/manage-labels of openshift-eng/ai-helpers.

  • SKILL.md
  • manage_labels.py
  • test_manage_labels.py

Open the folder on GitHubat commit a627176

Compare with similar skills

Manage Labels 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.

Manage Labels compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Manage Labels this skillopenshift-eng/ai-helpers120—~1.9kAutomated safety check: PassApache-2.0
MCP Server Builderanthropics/skills180k64 repos~2.3kAutomated safety check: PassApache-2.0
PDF Processinganthropics/skills180k48 repos~2kAutomated safety check: PassProprietary
NotebookLM Research AssistantPleasePrompto/notebooklm-skill7.8k14 repos~2.4kAutomated safety check: NotesMIT
Manim Video Productionbrowser-use/video-use28k6 repos~3kAutomated safety check: PassMIT
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 64 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • PDF Processing

    anthropics/skills

    Official

    Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.

    180k GitHub starsUsed in 48 repos~2k tokens
    Documents & OfficeAuto-check passed
  • NotebookLM Research Assistant

    PleasePrompto/notebooklm-skill

    Lets Claude Code ask questions of your Google NotebookLM notebooks through browser automation and return answers grounded in your uploaded sources.

    7.8k GitHub starsUsed in 14 repos~2.4k tokens
    Knowledge ManagementAuto-check: notes
  • Manim Video Production

    browser-use/video-use

    Produces math and technical explainer videos with Manim Community Edition: concept animations, equation derivations, algorithm walkthroughs and data stories.

    28k GitHub starsUsed in 6 repos~3k tokens
    Media & CreativeAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • PPT Master

    hugohe3/ppt-master

    Generates editable PowerPoint decks, rebuilds slides from images, fills .pptx templates and polishes existing presentations through routed workflows.

    58k GitHub starsUsed in 1 repo~2.5k tokens
    Documents & OfficeAuto-check passed

More from openshift-eng/ai-helpers

All 118 skills in this repo
  • Investigate CI Reliability

    openshift-eng/ai-helpers

    Find and independently validate actionable reliability defects across OpenShift release jobs and presubmits, then export portable issue handoffs.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Address Review PR

    openshift-eng/ai-helpers

    Fetch and address all PR review comments — categorize by priority, make code changes, post replies, and push.

    120 GitHub stars~2.9k tokensUpdated 2 days ago
    Auto-check passed
  • Categorize Activity Types

    openshift-eng/ai-helpers

    Categorize Jira issues into Red Hat Sankey Activity Type categories using MCP Jira tools.

    120 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Has Review Work

    openshift-eng/ai-helpers

    Decide whether a GitHub PR has unanswered authorized review comments or new required CI failures worth a follow-up agent.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Must Gather Analyzer

    openshift-eng/ai-helpers

    Analyze OpenShift must-gather diagnostic data including cluster operators, pods, nodes, and network components.

    120 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check passed
  • Payload Autodl JSON

    openshift-eng/ai-helpers

    Schema for the autodl JSON data file produced by payload-analysis for database ingestion — you must use this skill whenever generating the autodl JSON file

    120 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Manage Labels

What does Manage Labels do?

Create, update, or delete Sippy job run Labels (the human-readable tags applied by Symptoms) via the authenticated Sippy API. Manage Labels is an agent skill from openshift-eng/ai-helpers.

How do I install Manage Labels in Claude Code?

Run `npx skills add openshift-eng/ai-helpers --skill manage-labels -a claude-code`. Or copy the skill folder (plugins/ci/skills/manage-labels in openshift-eng/ai-helpers) into .claude/skills/manage-labels in your project. Claude Code loads it when a task matches its description.

How do I install Manage Labels in Codex?

Run `npx skills add openshift-eng/ai-helpers --skill manage-labels -a codex`. Or copy the skill folder (plugins/ci/skills/manage-labels in openshift-eng/ai-helpers) into .agents/skills/manage-labels in your project. Codex loads it when a task matches its description.

Can I use Manage Labels 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 openshift-eng/ai-helpers --skill manage-labels -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/manage-labels, .gemini/skills/manage-labels, .github/skills/manage-labels and .opencode/skills/manage-labels in your project.

What does Manage Labels need to run?

Going by SKILL.md and its folder, Manage Labels needs Python for the scripts in its folder, the command-line tools its instructions call (python3) and credentials named SIPPY_TOKEN. Our summary lists: Python 3; A credential in SIPPY_TOKEN.

Does Manage Labels access the network?

SKILL.md names 2 domains. In commands or code: api.cr.j7t7.p1.openshiftapps.com and sippy-auth.dptools.openshift.org; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Manage Labels 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 Manage Labels use?

Manage Labels 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 Manage Labels 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 Manage Labels?

Skills that share tags, products or a category with Manage Labels: MCP Server Builder (anthropics/skills, 180k stars), PDF Processing (anthropics/skills, 180k stars), NotebookLM Research Assistant (PleasePrompto/notebooklm-skill, 7.8k stars) and Manim Video Production (browser-use/video-use, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Manage Labels?

openshift-eng (a GitHub organization) maintains it in openshift-eng/ai-helpers, which has 120 GitHub stars. The repository holds 118 skills in this directory. The repository was last updated on October 6, 2026.

Source: openshift-eng/ai-helpers on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.