finops-waste
Identify workflow waste patterns and suggest fixes - skipped runs, bot triggers, missing concurrency. Use when CI costs are high, workflows run too often, or you need to optimize GitHub Actions efficiency.
Works with
---
name: finops-waste
description: Identify workflow waste patterns and suggest fixes - skipped runs, bot triggers, missing concurrency. Use when CI costs are high, workflows run too often, or you need to optimize GitHub Actions efficiency.
license: MIT
---
# /finops:waste
Identify GitHub Actions waste patterns and provide actionable fix suggestions. Analyzes skipped runs, bot triggers, missing concurrency groups, and missing path filters.
## When to Use This Skill
| Use this skill when... | Use a sibling instead when... |
|---|---|
| You want actionable fixes for CI cost waste — concurrency, path filters, bot guards | You need a high-level billing and health snapshot — use `/finops:overview` |
| You need to add `cancel-in-progress` to PR workflows | You need workflow run frequency and duration stats — use `/finops:workflows` |
| You are auditing skipped runs and bot-triggered noise | You are auditing cache bloat or stale caches — use `/finops:caches` |
| You want to fix one repo's workflow config | You want to rank waste across many repos — use `/finops:compare` |
## Context
- Current repo URL: !`git remote get-url origin`
- Workflow files: !`find .github/workflows -maxdepth 1 \( -name '*.yml' -o -name '*.yaml' \)`
## Parameters
| Parameter | Description | Default |
|-----------|-------------|---------|
| `repo` | Repository in owner/name format | Current repository |
## Execution
**1. Run API-based waste analysis:**
```bash
bash "${SKILL_DIR}/scripts/waste-analysis.sh" "$REPO"
```
**2. Workflow file analysis (requires local filesystem):**
```bash
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
```
## Fix Suggestions
After analysis, provide specific fixes based on findings:
### Fix: Missing Concurrency Group
```yaml
# Add to workflow file at top level or per-job
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true # For PR workflows
```
### Fix: Bot Trigger Filter
```yaml
jobs:
build:
# Skip if triggered by a bot
if: github.event.sender.type != 'Bot'
runs-on: ubuntu-latest
steps: ...
```
Or for specific bots:
```yaml
if: github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]'
```
### Fix: Add Path Filters
```yaml
on:
push:
branches: [main]
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
paths-ignore:
- '**.md'
- 'docs/**'
- '.github/**'
pull_request:
paths:
- 'src/**'
- 'package.json'
```
### Fix: Cancel Duplicate PR Runs
```yaml
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
```
## Output Format
```
=== 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
```
## Agentic Optimizations
| Context | Command |
|---------|---------|
| Skipped runs count | `gh run list --limit 100 --json conclusion --jq '[.[] | select(.conclusion=="skipped")] | length'` |
| Failed runs (compact) | `gh run list --limit 50 --status failure --json name,createdAt` |
| Workflow file check | `bash "${SKILL_DIR}/scripts/waste-analysis.sh" "$REPO"` |
| Check concurrency in file | `grep -l "concurrency:" .github/workflows/*.yml` |
| Bot-triggered runs | `gh run list --limit 100 --json actor,conclusion --jq '[.[] | select(.actor.login | test("\\[bot\\]"))] | length'` |
## Post-actions
1. **Offer to apply fixes**: For each issue found, offer to edit the workflow file directly
2. **Prioritize by impact**: Focus on high-frequency workflows first
3. **Test recommendations**: Suggest testing changes on a feature branch first
4. **Create tracking issue**: Optionally create a GitHub issue to track optimization workMore Deployment & CI/CD skills
azure-enterprise-infra-planner
microsoft/azure-skills
Architect and provision enterprise Azure infrastructure from workload descriptions. For cloud architects and platform engineers planning networking, identity, security, compliance, and multi-resource topologies with WAF alignment. Generates Bicep or Terraform directly (no azd). WHEN: 'plan Azure infrastructure', 'architect Azure landing zone', 'design hub-spoke network', 'plan multi-region DR topology', 'set up VNets firewalls and private endpoints', 'subscription-scope Bicep deployment', 'Azure Backup for VM workloads'. PREFER azure-prepare FOR app-centric workflows.
azure-kubernetes-app-deploy
microsoft/azure-skills
Use when deploying an existing web application or API to an already-running Azure Kubernetes Service cluster. Detects the framework, generates a Dockerfile and Kubernetes manifests, validates against AKS Deployment Safeguards, and deploys with verification. WHEN: deploy app to AKS, deploy to existing AKS cluster, containerize app for Kubernetes, generate K8s manifests for Azure, set up CI/CD for AKS, my AKS deployment is failing safeguard checks, I have a Django/Express/Spring Boot app to run on AKS. DO NOT USE FOR: creating or provisioning an AKS cluster (use azure-kubernetes), assessing migration to AKS Automatic (use azure-kubernetes-automatic-readiness), or deploying to non-AKS targets like Web Apps, Container Apps, or Functions.
finetuning
microsoft/azure-skills
Fine-tune models on Microsoft Foundry using SFT (supervised), DPO (preference), or RFT (reinforcement with graders). Covers dataset preparation, training job submission, deployment, and evaluation. USE FOR: fine-tune, SFT, DPO, RFT, training data, grader, distillation, fine-tuned model, training job, large file upload, calibrate grader, deploy fine-tuned model, evaluate fine-tuned model. DO NOT USE FOR: general model deployment without fine-tuning (use deploy-model), agent creation (use agents), prompt optimization without training (use prompt-optimizer).

