Help us improve
Share bugs, ideas, or general feedback.
From finops-plugin
Identifies GitHub Actions workflow waste patterns like skipped runs, bot triggers, missing concurrency, path filters, and cancel-in-progress. Suggests YAML fixes for optimization.
npx claudepluginhub laurigates/claude-plugins --plugin finops-pluginHow this skill is triggered — by the user, by Claude, or both
Slash command
/finops-plugin:finops-wastehaikuThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Identify GitHub Actions waste patterns and provide actionable fix suggestions. Analyzes skipped runs, bot triggers, missing concurrency groups, and missing path filters.
Analyzes GitHub Actions billing, workflow efficiency, and waste patterns in orgs and repos. Identifies wasted runs, trigger issues, and CI/CD costs using gh CLI.
Creates, audits, and optimizes GitHub Actions workflows for CI/CD, matrix builds, reusable workflows, composite actions, caching, and security hardening like pinning and permissions.
Detects workflow failures like command errors, timeouts, retries, context exhaustion and inefficiencies like verbose output, redundant reads, creating GitHub/GitLab issues for fixes.
Share bugs, ideas, or general feedback.
Identify GitHub Actions waste patterns and provide actionable fix suggestions. Analyzes skipped runs, bot triggers, missing concurrency groups, and missing path filters.
git remote get-url originfind .github/workflows -maxdepth 1 \( -name '*.yml' -o -name '*.yaml' \)| Parameter | Description | Default |
|---|---|---|
repo | Repository in owner/name format | Current repository |
1. Run API-based waste analysis:
bash "${SKILL_DIR}/scripts/waste-analysis.sh" "$REPO"
2. Workflow file analysis (requires local filesystem):
echo ""
echo "=== Workflow File Analysis ==="
for f in .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null; do
[ -f "$f" ] || continue
name=$(basename "$f")
issues=""
# Check for concurrency
if ! grep -q "concurrency:" "$f"; then
issues="${issues}missing-concurrency "
fi
# Check for path filters (on push/pull_request without paths)
if grep -qE "^\s*(push|pull_request):" "$f" && ! grep -q "paths:" "$f"; then
issues="${issues}no-path-filter "
fi
# Check for bot filter
if ! grep -q "github.event.sender.type" "$f" && ! grep -q "github.actor" "$f"; then
issues="${issues}no-bot-filter "
fi
# Check for cancel-in-progress
if grep -q "pull_request:" "$f" && ! grep -q "cancel-in-progress:" "$f"; then
issues="${issues}no-cancel-in-progress "
fi
if [ -n "$issues" ]; then
echo " $name: $issues"
else
echo " $name: OK"
fi
done
After analysis, provide specific fixes based on findings:
# Add to workflow file at top level or per-job
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true # For PR workflows
jobs:
build:
# Skip if triggered by a bot
if: github.event.sender.type != 'Bot'
runs-on: ubuntu-latest
steps: ...
Or for specific bots:
if: github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]'
on:
push:
branches: [main]
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
paths-ignore:
- '**.md'
- 'docs/**'
- '.github/**'
pull_request:
paths:
- 'src/**'
- 'package.json'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
=== Waste Analysis: org/repo ===
=== Skipped Runs ===
Total runs: 100
Skipped: 15 (15%)
By workflow:
CI: 10 skipped
CodeQL: 5 skipped
=== Bot-Triggered Runs ===
Bot-triggered: 25/100 runs
By bot:
dependabot[bot]: 15 runs
renovate[bot]: 10 runs
=== Workflow File Analysis ===
ci.yml: missing-concurrency no-path-filter
deploy.yml: OK
codeql.yml: no-bot-filter
=== Potential Duplicate Runs ===
Commit abc1234: 3 runs (CI, CodeQL, Security)
=== High-Frequency Workflows ===
CI: 67 runs in sample - review trigger conditions