/finops:workflows Analyze GitHub Actions workflow runs for a repository - frequency, duration, success rates, and efficiency metrics. When to Use This Skill | Use this skill when... | Use a sibling instead when... | |---|---| | You need to analyze workflow run frequency, duration, and trigger distribution | You only need a quick high-level health snapshot — use | | You are investigating high failure rates on specific workflows | You want actionable fixes for workflow config waste — use | | You need org-wide workflow timing analysis ( ) | You want to compare workflow metrics across many repos…

\\t' read -r total success failure skipped cancelled \u003c\u003c\u003c \"$stats\"\n total=${total:-0}\n success=${success:-0}\n failure=${failure:-0}\n skipped=${skipped:-0}\n cancelled=${cancelled:-0}\n\n if [[ \"$total\" -gt 0 ]]; then\n short_name=\"${repo#*/}\"\n printf \"%-45s %6d %6d %6d %6d %6d\\n\" \"$short_name\" \"$total\" \"$success\" \"$failure\" \"$skipped\" \"$cancelled\"\n echo \"$repo $total $success $failure $skipped $cancelled\" >> \"$TMPFILE\"\n fi\n\n ORG_TOTAL=$((ORG_TOTAL + total))\n ORG_SUCCESS=$((ORG_SUCCESS + success))\n ORG_FAILURE=$((ORG_FAILURE + failure))\n ORG_SKIPPED=$((ORG_SKIPPED + skipped))\n ORG_CANCELLED=$((ORG_CANCELLED + cancelled))\ndone \u003c\u003c\u003c \"$REPOS\"\n\necho \"\"\necho \"=== Org-Wide Totals ===\"\necho \" Total runs: $ORG_TOTAL\"\necho \" Success: $ORG_SUCCESS\"\necho \" Failure: $ORG_FAILURE\"\necho \" Skipped: $ORG_SKIPPED\"\necho \" Cancelled: $ORG_CANCELLED\"\nif [[ \"$ORG_TOTAL\" -gt 0 ]]; then\n SUCCESS_RATE=$((ORG_SUCCESS * 100 / ORG_TOTAL))\n WASTE_RATE=$(((ORG_SKIPPED + ORG_CANCELLED) * 100 / ORG_TOTAL))\n echo \" Success rate: ${SUCCESS_RATE}%\"\n echo \" Waste rate (skipped+cancelled): ${WASTE_RATE}%\"\nfi\n\necho \"\"\necho \"=== Top 10 by Run Count ===\"\n# shellcheck disable=SC2034 # Positional fields — not all used in every loop\nsort -k2 -n -r \"$TMPFILE\" | head -10 | while read -r repo total success failure skipped cancelled; do\n short=\"${repo#*/}\"\n printf \" %-40s %d runs\\n\" \"$short\" \"$total\"\ndone\n\necho \"\"\necho \"=== Failure Hotspots ===\"\n# shellcheck disable=SC2034 # Positional fields — not all used in every loop\nsort -k4 -n -r \"$TMPFILE\" | head -10 | while read -r repo total success failure skipped cancelled; do\n if [[ \"$failure\" -gt 0 ]]; then\n short=\"${repo#*/}\"\n rate=$((failure * 100 / total))\n printf \" %-40s %d failures (%d%%)\\n\" \"$short\" \"$failure\" \"$rate\"\n fi\ndone\n\necho \"\"\necho \"=== Waste Hotspots (skipped + cancelled) ===\"\n# shellcheck disable=SC2034 # Positional fields — not all used in every loop\nwhile read -r repo total success failure skipped cancelled; do\n waste=$((skipped + cancelled))\n if [[ \"$waste\" -gt 5 ]]; then\n short=\"${repo#*/}\"\n rate=$((waste * 100 / total))\n printf \" %-40s %d wasted (%d%%)\\n\" \"$short\" \"$waste\" \"$rate\"\n fi\ndone \u003c \u003c(sort -k2 -n -r \"$TMPFILE\")\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":4475,"content_sha256":"14170304b02fdecf347ec3ed7bcced0e4425826ebc697b1620c76cd051a35d8b"},{"filename":"scripts/workflow-runs.sh","content":"#!/usr/bin/env bash\n# Workflow Runs Analysis\n# Analyzes GitHub Actions workflow runs for a repository.\n# Usage: bash workflow-runs.sh [repo] [--created RANGE]\n#\n# Args:\n# repo Repository in owner/name format (default: current repo)\n# --created Date range filter for gh api (e.g., \">=2026-03-01\", \"2026-02-01..2026-03-01\")\n#\n# Output: Active workflows, run summary, duration analysis, triggers, failures,\n# and high-frequency detection.\n\n# shellcheck disable=SC2016 # jq expressions use $ for variable references, not shell expansion\nset -euo pipefail\n\nREPO=\"\"\nCREATED=\"\"\n\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n --created)\n CREATED=\"$2\"\n shift 2\n ;;\n *)\n REPO=\"$1\"\n shift\n ;;\n esac\ndone\n\nREPO=\"${REPO:-$(gh repo view --json nameWithOwner --jq '.nameWithOwner')}\"\necho \"Analyzing workflows for: $REPO\"\n\n# Build query params\nQUERY=\"per_page=100\"\nif [[ -n \"$CREATED\" ]]; then\n QUERY=\"${QUERY}&created=${CREATED}\"\n echo \"Date filter: $CREATED\"\nfi\n\necho \"\"\necho \"=== Active Workflows ===\"\ngh workflow list --repo \"$REPO\" --json id,name,state \\\n --jq '.[] | select(.state == \"active\") | \" \\(.name) (id: \\(.id))\"'\n\necho \"\"\necho \"=== Run Summary ===\"\ngh api \"/repos/$REPO/actions/runs?${QUERY}\" \\\n --jq '.workflow_runs | group_by(.name) |\n map({\n name: .[0].name,\n total: length,\n success: ([.[] | select(.conclusion == \"success\")] | length),\n failure: ([.[] | select(.conclusion == \"failure\")] | length),\n cancelled: ([.[] | select(.conclusion == \"cancelled\")] | length),\n skipped: ([.[] | select(.conclusion == \"skipped\")] | length)\n }) |\n sort_by(-.total)[] |\n \"\\(.name):\\n Total: \\(.total) | Success: \\(.success) | Failure: \\(.failure) | Cancelled: \\(.cancelled) | Skipped: \\(.skipped)\\n Success rate: \\(if .total > 0 then ((.success / .total * 100) | floor) else 0 end)%\"'\n\necho \"\"\necho \"=== Duration Analysis ===\"\nDURATION_QUERY=\"per_page=50&status=completed\"\nif [[ -n \"$CREATED\" ]]; then\n DURATION_QUERY=\"${DURATION_QUERY}&created=${CREATED}\"\nfi\ngh api \"/repos/$REPO/actions/runs?${DURATION_QUERY}\" \\\n --jq '.workflow_runs | group_by(.name) |\n map({\n name: .[0].name,\n count: length,\n durations: [.[] | (.run_started_at as $start | .updated_at as $end |\n (($end | fromdateiso8601) - ($start | fromdateiso8601)))],\n }) |\n map({\n name: .name,\n count: .count,\n avg_seconds: (if .count > 0 then (.durations | add / length | floor) else 0 end),\n max_seconds: (if .count > 0 then (.durations | max) else 0 end),\n total_seconds: (.durations | add)\n }) |\n sort_by(-.total_seconds)[] |\n \"\\(.name):\\n Runs: \\(.count) | Avg: \\(.avg_seconds / 60 | floor)m\\(.avg_seconds % 60)s | Max: \\(.max_seconds / 60 | floor)m\\(.max_seconds % 60)s | Total: \\(.total_seconds / 60 | floor)min\"'\n\necho \"\"\necho \"=== Trigger Types ===\"\ngh api \"/repos/$REPO/actions/runs?${QUERY}\" \\\n --jq '.workflow_runs | group_by(.event) |\n map({event: .[0].event, count: length}) |\n sort_by(-.count)[] |\n \" \\(.event): \\(.count) runs\"'\n\necho \"\"\necho \"=== Recent Failures (last 10) ===\"\nFAIL_QUERY=\"per_page=100&status=completed\"\nif [[ -n \"$CREATED\" ]]; then\n FAIL_QUERY=\"${FAIL_QUERY}&created=${CREATED}\"\nfi\ngh api \"/repos/$REPO/actions/runs?${FAIL_QUERY}\" \\\n --jq '[.workflow_runs[] | select(.conclusion == \"failure\")] | .[0:10][] |\n \" #\\(.run_number) \\(.name) - \\(.created_at | split(\"T\")[0]) - \\(.html_url)\"'\n\necho \"\"\necho \"=== High Frequency Workflows ===\"\ngh api \"/repos/$REPO/actions/runs?${QUERY}\" \\\n --jq '.workflow_runs | group_by(.name) |\n map(select(length > 60)) |\n map({name: .[0].name, runs: length, per_day: (length / 30 | . * 10 | floor / 10)}) |\n sort_by(-.runs)[] |\n \" \\(.name): \\(.runs) runs (~\\(.per_day)/day) - consider path filters\"'\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":3954,"content_sha256":"d8cf1c6ed0f1b1822991123b5a37fd41f8384dd8c108657dfe1f8d167a418a41"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"/finops:workflows","type":"text"}]},{"type":"paragraph","content":[{"text":"Analyze GitHub Actions workflow runs for a repository - frequency, duration, success rates, and efficiency metrics.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"When to Use This Skill","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use this skill when...","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use a sibling instead when...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You need to analyze workflow run frequency, duration, and trigger distribution","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You only need a quick high-level health snapshot — use ","type":"text"},{"text":"/finops:overview","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You are investigating high failure rates on specific workflows","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You want actionable fixes for workflow config waste — use ","type":"text"},{"text":"/finops:waste","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You need org-wide workflow timing analysis (","type":"text"},{"text":"/finops:workflows org \u003cname>","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You want to compare workflow metrics across many repos — use ","type":"text"},{"text":"/finops:compare","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You want to identify slow or noisy workflows by duration","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"You are investigating cache size or stale caches — use ","type":"text"},{"text":"/finops:caches","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Context","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Current repo URL: !","type":"text"},{"text":"git remote get-url origin","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Parameters","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Parameter","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Description","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Default","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"repo","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Repository in owner/name format","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Current repository","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--created","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Date range filter (e.g., ","type":"text"},{"text":">=2026-03-01","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"None (last 100 runs)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"org \u003cname>","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Org-wide analysis (use instead of repo)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Execution","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Per-repo analysis (default)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash \"${SKILL_DIR}/scripts/workflow-runs.sh\" $ARGS","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Org-wide analysis","type":"text"}]},{"type":"paragraph","content":[{"text":"When the user requests org-wide analysis, use the org script:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash \"${SKILL_DIR}/scripts/workflow-runs-org.sh\" $ARGS","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Output Format","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"Analyzing workflows for: org/repo\n\n=== Active Workflows ===\n CI (id: 12345)\n Deploy (id: 12346)\n CodeQL (id: 12347)\n\n=== Run Summary ===\nCI:\n Total: 156 | Success: 140 | Failure: 10 | Cancelled: 4 | Skipped: 2\n Success rate: 89%\nDeploy:\n Total: 45 | Success: 44 | Failure: 1 | Cancelled: 0 | Skipped: 0\n Success rate: 97%\n\n=== Duration Analysis ===\nCI:\n Runs: 50 | Avg: 4m32s | Max: 12m15s | Total: 226min\nDeploy:\n Runs: 20 | Avg: 2m10s | Max: 3m45s | Total: 43min\n\n=== Trigger Types ===\n push: 89 runs\n pull_request: 67 runs\n schedule: 30 runs\n workflow_dispatch: 5 runs\n\n=== Recent Failures (last 10) ===\n #234 CI - 2025-01-28 - https://github.com/org/repo/actions/runs/...\n #231 CI - 2025-01-27 - https://github.com/org/repo/actions/runs/...\n\n=== High Frequency Workflows ===\n CI: 156 runs (~5.2/day) - consider path filters","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Agentic Optimizations","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Context","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Command","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Workflow list (JSON)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh workflow list --json name,id,state","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Recent runs (compact)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh run list --workflow \u003cname> --limit 20 --json status,conclusion,createdAt","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Failed runs only","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh run list --status failure --limit 10 --json name,createdAt,url","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run timing (JSON)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"`gh api \"/repos/{owner}/{repo}/actions/runs?per_page=50\" --jq '.workflow_runs[]","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Compact per-repo analysis","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"bash \"${SKILL_DIR}/scripts/workflow-runs.sh\" $ARGS","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Org-wide analysis","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"bash \"${SKILL_DIR}/scripts/workflow-runs-org.sh\" $ARGS","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Post-actions","type":"text"}]},{"type":"paragraph","content":[{"text":"Based on findings, suggest:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"High failure rate -> Investigate recent failures, check logs with ","type":"text"},{"text":"gh run view --log-failed","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"High frequency -> Review trigger conditions, add path filters","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Long durations -> Review caching, parallelization, step optimization","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Many skipped -> Run ","type":"text"},{"text":"/finops:waste","type":"text","marks":[{"type":"code_inline"}]},{"text":" for detailed analysis","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"args":"[repo] [--created RANGE]","date":"2026-06-05","name":"finops-workflows","author":"@skillopedia","source":{"stars":35,"repo_name":"claude-plugins","origin_url":"https://github.com/laurigates/claude-plugins/blob/HEAD/finops-plugin/skills/finops-workflows/SKILL.md","repo_owner":"laurigates","body_sha256":"3b861d709c57b50a13004c3140f98ce7f64c299b863d1e08af23b590a2bbbc7f","cluster_key":"fdc42befc04d6c31ef6a920dcd3fc66ebb860dfaa26bab889af2840e30bb1e8b","clean_bundle":{"format":"clean-skill-bundle-v1","source":"laurigates/claude-plugins/finops-plugin/skills/finops-workflows/SKILL.md","attachments":[{"id":"156d74c4-aec2-56de-a686-bdcba56321dd","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/156d74c4-aec2-56de-a686-bdcba56321dd/attachment.sh","path":"scripts/workflow-runs-org.sh","size":4475,"sha256":"14170304b02fdecf347ec3ed7bcced0e4425826ebc697b1620c76cd051a35d8b","contentType":"application/x-sh; charset=utf-8"},{"id":"cbaa9c2c-bca7-5efe-b299-781d0a43e6b6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/cbaa9c2c-bca7-5efe-b299-781d0a43e6b6/attachment.sh","path":"scripts/workflow-runs.sh","size":3954,"sha256":"d8cf1c6ed0f1b1822991123b5a37fd41f8384dd8c108657dfe1f8d167a418a41","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"b9d07e29fbef2c31bdf77562f571effadcab232d21bd1c1522969b7bf0856007","attachment_count":2,"text_attachments":2,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"finops-plugin/skills/finops-workflows/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"productivity-workflow","category_label":"Productivity"},"exact_dupes_collapsed_into_this":0},"created":"2025-01-30T00:00:00.000Z","version":"v1","category":"productivity-workflow","modified":"2026-04-25T00:00:00.000Z","reviewed":"2026-04-25T00:00:00.000Z","import_tag":"clean-skills-v1","description":"Analyze workflow runs — frequency, duration, success rates, efficiency. Use when investigating slow CI, high failure rates, or run patterns over time.","allowed-tools":"Bash(gh api *), Bash(gh workflow *), Bash(gh repo *), Bash(bash *), Read, TodoWrite","argument-hint":"Optional repo (owner/name format, defaults to current repo). Use --created for date range. Use org mode for org-wide analysis."}},"renderedAt":1782986820027}

/finops:workflows Analyze GitHub Actions workflow runs for a repository - frequency, duration, success rates, and efficiency metrics. When to Use This Skill | Use this skill when... | Use a sibling instead when... | |---|---| | You need to analyze workflow run frequency, duration, and trigger distribution | You only need a quick high-level health snapshot — use | | You are investigating high failure rates on specific workflows | You want actionable fixes for workflow config waste — use | | You need org-wide workflow timing analysis ( ) | You want to compare workflow metrics across many repos…