{
  "schemaVersion": "1.0",
  "item": {
    "slug": "martok9803-ci-whisperer",
    "name": "CI Whisperer",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/martok9803/martok9803-ci-whisperer",
    "canonicalUrl": "https://clawhub.ai/martok9803/martok9803-ci-whisperer",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/martok9803-ci-whisperer",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=martok9803-ci-whisperer",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/config.md",
      "scripts/ci_autopsy.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/martok9803-ci-whisperer"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/martok9803-ci-whisperer",
    "agentPageUrl": "https://openagent3.xyz/skills/martok9803-ci-whisperer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/martok9803-ci-whisperer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/martok9803-ci-whisperer/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "CI Whisperer",
        "body": "Fetch GitHub Actions run details, pinpoint the failure, and propose a minimal fix.\n\nThis skill is meant to feel like a senior engineer doing a fast “CI autopsy”."
      },
      {
        "title": "Read-only mode (default)",
        "body": "Collect evidence, explain root cause, propose fixes.\nNo pushes, no PRs, no branch creation."
      },
      {
        "title": "PR fix mode (opt-in)",
        "body": "PR fix mode is allowed only when both are true:\n\nThe user explicitly asks to open a PR.\nA local toggle is enabled (the “on/off button”):\n\nenv var: CI_WHISPERER_WRITE=1\n\nIf the toggle is not enabled, refuse politely and explain how to enable it."
      },
      {
        "title": "1) Identify target run",
        "body": "Accept any of:\n\nworkflow run URL\nrun id\nPR number (then locate latest run)\n\nAlways determine:\n\nowner/repo\nrun id\n\nIf the user didn’t specify the repo, ask for it (or infer from context)."
      },
      {
        "title": "2) Gather evidence (tool-backed)",
        "body": "Prefer deterministic tooling. Use /usr/bin/gh when the system has multiple gh binaries.\n\nSuggested commands:\n\ngh run view <run-id> --repo owner/repo --json status,conclusion,createdAt,updatedAt,event,headBranch,headSha,url,name\ngh run view <run-id> --repo owner/repo --log-failed\ngh run view <run-id> --repo owner/repo --log (only if needed; can be noisy)\n\nIf gh is not authenticated, stop and ask the user to run:\n\n/usr/bin/gh auth login"
      },
      {
        "title": "3) Produce a \"CI Autopsy\" report",
        "body": "Return:\n\nfailing job(s) and step(s)\nthe exact error excerpt (short; redact secrets)\nlikely root cause(s) ranked\nminimal fix options\nconfidence level"
      },
      {
        "title": "4) (Optional) Open a PR (only with explicit approval + write toggle)",
        "body": "If the user asks to fix it and CI_WHISPERER_WRITE=1:\n\ncreate a branch\napply minimal changes\nrun local lint/tests if available\nopen PR with a clear description and link to the failing run\n\nIf the user asks but write mode is OFF:\n\nprovide the patch/diff instructions, but do not push."
      },
      {
        "title": "Safety",
        "body": "Never print tokens.\nDon’t open PRs or push changes unless explicitly requested.\nIf logs contain secrets, redact before quoting."
      },
      {
        "title": "Bundled scripts",
        "body": "Use scripts for repeatable fetching and parsing:\n\nscripts/ci_autopsy.py (fetch run metadata + failed logs)"
      }
    ],
    "body": "CI Whisperer\n\nFetch GitHub Actions run details, pinpoint the failure, and propose a minimal fix.\n\nThis skill is meant to feel like a senior engineer doing a fast “CI autopsy”.\n\nModes\nRead-only mode (default)\nCollect evidence, explain root cause, propose fixes.\nNo pushes, no PRs, no branch creation.\nPR fix mode (opt-in)\n\nPR fix mode is allowed only when both are true:\n\nThe user explicitly asks to open a PR.\nA local toggle is enabled (the “on/off button”):\nenv var: CI_WHISPERER_WRITE=1\n\nIf the toggle is not enabled, refuse politely and explain how to enable it.\n\nWorkflow\n1) Identify target run\n\nAccept any of:\n\nworkflow run URL\nrun id\nPR number (then locate latest run)\n\nAlways determine:\n\nowner/repo\nrun id\n\nIf the user didn’t specify the repo, ask for it (or infer from context).\n\n2) Gather evidence (tool-backed)\n\nPrefer deterministic tooling. Use /usr/bin/gh when the system has multiple gh binaries.\n\nSuggested commands:\n\ngh run view <run-id> --repo owner/repo --json status,conclusion,createdAt,updatedAt,event,headBranch,headSha,url,name\ngh run view <run-id> --repo owner/repo --log-failed\ngh run view <run-id> --repo owner/repo --log (only if needed; can be noisy)\n\nIf gh is not authenticated, stop and ask the user to run:\n\n/usr/bin/gh auth login\n3) Produce a \"CI Autopsy\" report\n\nReturn:\n\nfailing job(s) and step(s)\nthe exact error excerpt (short; redact secrets)\nlikely root cause(s) ranked\nminimal fix options\nconfidence level\n4) (Optional) Open a PR (only with explicit approval + write toggle)\n\nIf the user asks to fix it and CI_WHISPERER_WRITE=1:\n\ncreate a branch\napply minimal changes\nrun local lint/tests if available\nopen PR with a clear description and link to the failing run\n\nIf the user asks but write mode is OFF:\n\nprovide the patch/diff instructions, but do not push.\nSafety\nNever print tokens.\nDon’t open PRs or push changes unless explicitly requested.\nIf logs contain secrets, redact before quoting.\nBundled scripts\n\nUse scripts for repeatable fetching and parsing:\n\nscripts/ci_autopsy.py (fetch run metadata + failed logs)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/martok9803/martok9803-ci-whisperer",
    "publisherUrl": "https://clawhub.ai/martok9803/martok9803-ci-whisperer",
    "owner": "martok9803",
    "version": "0.2.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/martok9803-ci-whisperer",
    "downloadUrl": "https://openagent3.xyz/downloads/martok9803-ci-whisperer",
    "agentUrl": "https://openagent3.xyz/skills/martok9803-ci-whisperer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/martok9803-ci-whisperer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/martok9803-ci-whisperer/agent.md"
  }
}