Agent skill

Scripts

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

Generate tuned manifests and evaluate node tuning snapshots. An agent skill from openshift-eng/ai-helpers.

Apache-2.0Auto-check passed

Install Scripts

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

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

GitHub CLI
$ gh skill install openshift-eng/ai-helpers scripts --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/node-tuning/skills/scripts .claude/skills/scripts && 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
scripts
GitHub stars
120
Token cost
~2.2k tokens
SKILL.md length
618 words
Files
3
Skills in repo
118
Repo updated
First seen
Licence
Apache-2.0

At a glance

Generate tuned manifests and evaluate node tuning snapshots. An agent skill from openshift-eng/ai-helpers.

  • Works in 5 steps: Collect Inputs → Inspect or Label Nodes (optional) → Render the Manifest → …
  • SKILL.md covers When to Use These Scripts, Prerequisites, Script:… and Script: analyze_node_tuning.py
  • Runs Python scripts from its folder; calls python3

What it does

Scripts is an agent skill from openshift-eng/ai-helpers. Generate tuned manifests and evaluate node tuning snapshots

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

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

Example prompts

  • “/scripts”

Requirements

  • Python 3

Workflow steps

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

  1. Collect Inputs
  2. Inspect or Label Nodes (optional)
  3. Render the Manifest
  4. Review Output
  5. Validate and Apply

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

    No URLs in SKILL.md.

    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

Scripts loads about 2.2k tokens when it runs. Until then it costs about 17 tokens; SKILL.md has 618 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~17
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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). 618 words, ~2,176 tokens.

Download SKILL.mdSave it as .claude/skills/scripts/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
scripts
description
Generate tuned manifests and evaluate node tuning snapshots

Node Tuning Helper Scripts

Detailed instructions for invoking the helper utilities that back /node-tuning commands:

  • generate_tuned_profile.py renders Tuned manifests (tuned.openshift.io/v1).
  • analyze_node_tuning.py inspects live nodes or sosreports for tuning gaps.

When to Use These Scripts

  • Translate structured command inputs into Tuned manifests for the Node Tuning Operator.
  • Iterate on generated YAML outside the assistant or integrate the generator into automation.
  • Analyze CPU isolation, IRQ affinity, huge pages, sysctl values, and networking counters from live clusters or archived sosreports.

Prerequisites

  • Python 3.8 or newer (python3 --version).
  • Repository checkout so the scripts under plugins/node-tuning/skills/scripts/ are accessible.
  • Optional: oc CLI when validating or applying manifests.
  • Optional: Extracted sosreport directory when running the analysis script offline.
  • Optional (remote analysis): oc CLI access plus a valid KUBECONFIG when capturing /proc//sys or sosreport via oc debug node/<name>. The sosreport workflow pulls the registry.redhat.io/rhel9/support-tools image (override with --toolbox-image or TOOLBOX_IMAGE) and requires registry access. HTTP(S) proxy env vars from the host are forwarded automatically when present, but using a proxy is optional.

Script: generate_tuned_profile.py

Implementation Steps
  1. Collect Inputs

    • --profile-name: Tuned resource name.
    • --summary: [main] section summary.
    • Repeatable options: --include, --main-option, --variable, --sysctl, --section (SECTION:KEY=VALUE).
    • Target selectors: --machine-config-label key=value, --match-label key[=value].
    • Optional: --priority (default 20), --namespace, --output, --dry-run.
    • Use --list-nodes/--node-selector to inspect nodes and --label-node NODE:KEY[=VALUE] (plus --overwrite-labels) to tag machines.
  2. Inspect or Label Nodes (optional)

    bash
    # List all worker nodes
    python3 plugins/node-tuning/skills/scripts/generate_tuned_profile.py --list-nodes --node-selector "node-role.kubernetes.io/worker" --skip-manifest
    
    # Label a specific node for the worker-hp pool
    python3 plugins/node-tuning/skills/scripts/generate_tuned_profile.py \
      --label-node ip-10-0-1-23.ec2.internal:node-role.kubernetes.io/worker-hp= \
      --overwrite-labels \
      --skip-manifest
  3. Render the Manifest

    bash
    python3 plugins/node-tuning/skills/scripts/generate_tuned_profile.py \
      --profile-name "$PROFILE" \
      --summary "$SUMMARY" \
      --sysctl net.core.netdev_max_backlog=16384 \
      --match-label tuned.openshift.io/custom-net \
      --output .work/node-tuning/$PROFILE/tuned.yaml
    • Omit --output to write <profile-name>.yaml in the current directory.
    • Add --dry-run to print the manifest to stdout.
  4. Review Output

    • Inspect the generated YAML for accuracy.
    • Optionally format with yq or open in an editor for readability.
  5. Validate and Apply

    • Dry-run: oc apply --server-dry-run=client -f <manifest>.
    • Apply: oc apply -f <manifest>.
Error Handling
  • Missing required options raise ValueError with descriptive messages.
  • The script exits non-zero when no target selectors (--machine-config-label or --match-label) are supplied.
  • Invalid key/value or section inputs identify the failing argument explicitly.
Examples
bash
python3 plugins/node-tuning/skills/scripts/generate_tuned_profile.py \
  --profile-name realtime-worker \
  --summary "Realtime tuned profile" \
  --include openshift-node --include realtime \
  --variable isolated_cores=1 \
  --section bootloader:cmdline_ocp_realtime=+systemd.cpu_affinity=${not_isolated_cores_expanded} \
  --machine-config-label machineconfiguration.openshift.io/role=worker-rt \
  --priority 25 \
  --output .work/node-tuning/realtime-worker/tuned.yaml
bash
python3 plugins/node-tuning/skills/scripts/generate_tuned_profile.py \
  --profile-name openshift-node-hugepages \
  --summary "Boot time configuration for hugepages" \
  --include openshift-node \
  --section bootloader:cmdline_openshift_node_hugepages="hugepagesz=2M hugepages=50" \
  --machine-config-label machineconfiguration.openshift.io/role=worker-hp \
  --priority 30 \
  --output .work/node-tuning/openshift-node-hugepages/hugepages-tuned-boottime.yaml

Script: analyze_node_tuning.py

Purpose

Inspect either a live node (/proc, /sys) or an extracted sosreport snapshot for tuning signals (CPU isolation, IRQ affinity, huge pages, sysctl state, networking counters) and emit actionable recommendations.

Usage Patterns
  • Live node analysis
    bash
    python3 plugins/node-tuning/skills/scripts/analyze_node_tuning.py --format markdown
  • Remote analysis via oc debug
    bash
    python3 plugins/node-tuning/skills/scripts/analyze_node_tuning.py \
      --node worker-rt-0 \
      --kubeconfig ~/.kube/prod \
      --format markdown
  • Collect sosreport via oc debug and analyze locally
    bash
    python3 plugins/node-tuning/skills/scripts/analyze_node_tuning.py \
      --node worker-rt-0 \
      --toolbox-image registry.example.com/support-tools:latest \
      --sosreport-arg "--case-id=01234567" \
      --sosreport-output .work/node-tuning/sosreports \
      --format json
  • Offline sosreport analysis
    bash
    python3 plugins/node-tuning/skills/scripts/analyze_node_tuning.py \
      --sosreport /path/to/sosreport-2025-10-20
  • Automation-friendly JSON
    bash
    python3 plugins/node-tuning/skills/scripts/analyze_node_tuning.py \
      --sosreport /path/to/sosreport \
      --format json --output .work/node-tuning/node-analysis.json
Show full SKILL.md (254 more words)Show less
Implementation Steps
  1. Select data source
    • Provide --node <name> (with optional --kubeconfig / --oc-binary). By default the helper runs sosreport remotely from inside the RHCOS toolbox container (registry.redhat.io/rhel9/support-tools). Override the image with --toolbox-image, extend the sosreport command with --sosreport-arg, or disable the curated OpenShift flags via --skip-default-sosreport-flags. Pass --no-collect-sosreport to fall back to the direct /proc snapshot mode.
    • Provide --sosreport <dir> for archived diagnostics; detection finds embedded proc/ and sys/.
    • Omit both switches to query the live filesystem (defaults to /proc and /sys).
    • Override paths with --proc-root or --sys-root when the layout differs.
  2. Run analysis
    • The script parses cpuinfo, kernel cmdline parameters (isolcpus, nohz_full, tuned.non_isolcpus), default IRQ affinities, huge page counters, sysctl values (net, vm, kernel), transparent hugepage settings, netstat/sockstat counters, and ps snapshots (when available in sosreport).
  3. Review the report
    • Markdown output groups findings by section (System Overview, CPU & Isolation, Huge Pages, Sysctl Highlights, Network Signals, IRQ Affinity, Process Snapshot) and lists recommendations.
    • JSON output contains the same information in structured form for pipelines or dashboards.
  4. Act on recommendations
    • Apply Tuned profiles, MachineConfig updates, or manual sysctl/irqbalance adjustments.
    • Feed actionable items back into /node-tuning:generate-tuned-profile to codify desired state.
Error Handling
  • Missing proc/ or sys/ directories trigger descriptive errors.
  • Unreadable files are skipped without raising an error and noted in observations where relevant.
  • Non-numeric sysctl values are flagged for manual investigation.
Example Output (Markdown excerpt)
# Node Tuning Analysis

## System Overview
- Hostname: worker-rt-1
- Kernel: 4.18.0-477.el8
- NUMA nodes: 2
- Kernel cmdline: `BOOT_IMAGE=... isolcpus=2-15 tuned.non_isolcpus=0-1`

## CPU & Isolation
- Logical CPUs: 32
- Physical cores: 16 across 2 socket(s)
- SMT detected: yes
- Isolated CPUs: 2-15
...

## Recommended Actions
- Configure net.core.netdev_max_backlog (>=32768) to accommodate bursty NIC traffic.
- Transparent Hugepages are not disabled (`[never]` not selected). Consider setting to `never` for latency-sensitive workloads.
- 4 IRQs overlap isolated CPUs. Relocate interrupt affinities using tuned profiles or irqbalance.
Follow-up Automation Ideas
  • Persist JSON results in .work/node-tuning/<host>/analysis.json for historical tracing.
  • Gate upgrades by comparing recommendations across nodes.
  • Integrate with CI jobs that validate cluster tuning post-change.

© 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/node-tuning/skills/scripts of openshift-eng/ai-helpers.

  • SKILL.md
  • analyze_node_tuning.py
  • generate_tuned_profile.py

Open the folder on GitHubat commit a627176

Compare with similar skills

Scripts 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.

Scripts compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Scripts this skillopenshift-eng/ai-helpers120—~2.2kAutomated safety check: PassApache-2.0
Arize Evaluatorgithub/awesome-copilot40k2 repos~8.1kAutomated safety check: NotesMIT
LLM Evaluationdavila7/claude-code-templates32k12 repos~3.5kAutomated safety check: PassMIT
Agent Evaluationsickn33/agentic-awesome-skills47k1 repos~2kAutomated safety check: PassMIT
LLM Fine Tuningsickn33/agentic-awesome-skills47k1 repos~2.3kAutomated safety check: PassMIT
EvaluatorsArize-ai/phoenix12k—~1.7kAutomated safety check: PassCustom licence

Similar skills

  • Arize Evaluator

    github/awesome-copilot

    Official

    Handles LLM-as-judge evaluation workflows on Arize including creating/updating evaluators, running evaluations on spans or experiments, managing tasks, trigger-run operations, column mapping, and…

    40k GitHub starsUsed in 2 repos~8.1k tokens
    AI & LLM EngineeringAuto-check: notes
  • LLM Evaluation

    davila7/claude-code-templates

    Master comprehensive evaluation strategies for LLM applications, from automated metrics to human evaluation and A/B testing.

    32k GitHub starsUsed in 12 repos~3.5k tokens
    AI & LLM EngineeringAuto-check passed
  • Agent Evaluation

    sickn33/agentic-awesome-skills

    Evaluate agent behavior with versioned cases and explicit verifiers.

    47k GitHub starsUsed in 1 repo~2k tokens
    Agent WorkflowsAuto-check passed
  • LLM Fine Tuning

    sickn33/agentic-awesome-skills

    Set up infrastructure for fine-tuning LLMs with QLoRA, LoRA, and full fine-tuning using Hugging Face TRL, Axolotl, and distributed training with DeepSpeed or FSDP.

    47k GitHub starsUsed in 1 repo~2.3k tokens
    AI & LLM EngineeringAuto-check passed
  • Evaluators

    Arize-ai/phoenix

    Author or refine a Phoenix evaluator — code or LLM-as-a-judge — that scores a run's output.

    12k GitHub stars~1.7k tokensUpdated today
    EducationAuto-check passed
  • Fine-Tuning Expert

    Jeffallan/claude-skills

    Guides LLM fine-tuning with LoRA and QLoRA through Hugging Face PEFT, from dataset validation and training checks to adapter merging, quantization and deployment.

    12k GitHub starsUsed in 1 repo~1.7k tokens
    AI & LLM EngineeringAuto-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 today
    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 today
    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 today
    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 today
    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 today
    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 today
    Auto-check passed

Questions about Scripts

What does Scripts do?

Generate tuned manifests and evaluate node tuning snapshots. An agent skill from openshift-eng/ai-helpers. Scripts is an agent skill from openshift-eng/ai-helpers.

How do I install Scripts in Claude Code?

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

How do I install Scripts in Codex?

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

Can I use Scripts 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 scripts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scripts, .gemini/skills/scripts, .github/skills/scripts and .opencode/skills/scripts in your project.

What does Scripts need to run?

Going by SKILL.md and its folder, Scripts needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Scripts access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Scripts 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 Scripts use?

Scripts 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 Scripts use?

About 2.2k tokens (SKILL.md is roughly 8.7k 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 Scripts?

Skills that share tags, products or a category with Scripts: Arize Evaluator (github/awesome-copilot, 40k stars), LLM Evaluation (davila7/claude-code-templates, 32k stars), Agent Evaluation (sickn33/agentic-awesome-skills, 47k stars) and LLM Fine Tuning (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Scripts?

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.