ワンクリックで
microshift-ci-doctor
Analyze CI for multiple MicroShift releases and produce an HTML summary
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Analyze CI for multiple MicroShift releases and produce an HTML summary
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Surface your daily task list — QA-ready tickets, sprint backlog, carry-over items, open PRs, RHEL verification queue, and quarterly reminders. Use at the start of your day to see what needs attention.
Show detailed info about a specific TODO task — its tracked links, notes, and live Jira/PR status. Use when the user asks about a task, wants context to resume work on it, or asks what's needed to finish a ticket. Not for listing all tasks (read the TODO file directly or use edge-ic:sprint-status for sprint-wide views)
End-of-week automation - review active work and prepare next week's TODO
Run the full Prow CI release testing workflow — create PR, trigger jobs, check status, merge PR, download and upload artifacts
Generate interactive PCP performance dashboard from a Prow job URL
Download Prow job artifacts, identify root cause of failure, and produce a structured error report
SOC 職業分類に基づく
| name | microshift-ci:doctor |
| argument-hint | <release1,release2,...> |
| description | Analyze CI for multiple MicroShift releases and produce an HTML summary |
| user-invocable | true |
| allowed-tools | Skill, Bash, Read, Write, Glob, Grep, Agent |
/microshift-ci:doctor <release1,release2,...>
Accepts a comma-separated list of MicroShift release versions, runs analysis for each release and for open rebase PRs, and produces a single HTML summary file consolidating all results. Uses deterministic scripts for data collection, artifact download, aggregation, and HTML generation. LLM agents are used only for per-job root cause analysis and Jira bug correlation.
<ARGUMENTS> (required): Comma-separated list of release versions (e.g., 4.19,4.20,4.21,4.22)Compute once at the start by running date +%y%m%d and substituting into the path below. In all commands, replace <WORKDIR> with the computed path — do not use shell variables.
/tmp/microshift-ci-claude-workdir.<YYMMDD>
Goal: Deterministically collect all failed jobs and download their artifacts before any LLM analysis.
Actions:
Determine today's <WORKDIR> by running date +%y%m%d and substituting into /tmp/microshift-ci-claude-workdir.<YYMMDD>. Use this value in all subsequent commands.
Run the prepare script:
bash plugins/microshift-ci/scripts/doctor.sh prepare --component microshift --workdir <WORKDIR> <ARGUMENTS> --rebase --repo openshift/microshift
The script deterministically:
<WORKDIR>/jobs/release-<version>-jobs.json<WORKDIR>/jobs/prs-jobs.json and <WORKDIR>/jobs/prs-status.jsonRead the JSON output to know which releases have jobs to analyze and how many
Job JSON field names (use these exactly — do NOT guess alternatives like job_name):
job — full job namebuild_id — unique build identifierartifacts_dir — local path to downloaded artifactsurl — Prow job URLstatus — job result (failure, FAILURE, SUCCESS, PENDING)pr_number — PR number (PR jobs only)Error Handling:
<ARGUMENTS> is empty, show usage and stop"error" field in the JSON summary, data collection failed for that release — report the error to the user but continue with other releasesGoal: Generate performance graphs from PCP archives for all jobs that have pmlogs.
Actions:
Run the graphs script (this is deterministic, no LLM needed):
bash plugins/microshift-ci/scripts/doctor.sh graphs --component microshift --workdir <WORKDIR>
The script finds PCP archives in downloaded artifacts and generates PNG graphs at <WORKDIR>/graphs/<build_id>/:
1_cpu_usage.png — CPU usage (user, system, I/O wait)2_mem_usage.png — Memory usage (used, cached)3_disk_io.png — Disk I/O (read/write OPS, await)4_disk_usage.png — Disk usage by partition (% fill)If prerequisites are missing (pcp2json, matplotlib), the script errors and stops.
Goal: Get detailed root cause analysis for each failed job using pre-downloaded artifacts.
Actions:
Use the JSON summary output from Step 1 to build agent prompts. Do NOT read the job JSON files into the main conversation — the prepare script already printed all job details (artifacts_dir, build_id, job name) and agents receive artifacts_dir directly in their prompt.
For every failed job across all releases and PRs, launch a separate Agent (using the Agent tool, NOT the Skill tool). For PR jobs, only launch agents for jobs with FAILURE status.
For release jobs:
Agent: subagent_type=general_purpose, prompt="Analyze this Prow job and save the report:
Job: <JOB_NAME>
URL: <JOB_URL>
Performance graphs (if generated): <WORKDIR>/graphs/<JOB_ID>/
MicroShift source (if present): <WORKDIR>/src/microshift/ (for main) or <WORKDIR>/src/microshift-release-<RELEASE>/ (for release branches)
1. Run /microshift-ci:prow-job <ARTIFACTS_DIR>
2. Your goal is the UNDERLYING root cause, not the first error in the log — follow the
skill's drill-down and causal-chain requirements, consulting the sosreport and the
performance graphs when relevant.
3. After the analysis completes, save the FULL report output (including the --- STRUCTURED SUMMARY --- block) to:
<WORKDIR>/jobs/release-<RELEASE>-job-<N>-<JOB_ID>.txt
Use the Write tool to save the file. The file must contain the complete analysis report.
4. After saving, reply with EXACTLY one line: DONE <output-file-path>. Do NOT include the
report text in your reply."
For PR jobs:
Agent: subagent_type=general_purpose, prompt="Analyze this Prow job and save the report:
Job: <JOB_NAME> (PR #<PR>)
URL: <JOB_URL>
Performance graphs (if generated): <WORKDIR>/graphs/<BUILD_ID>/
MicroShift source (if present): <WORKDIR>/src/microshift/
1. Run /microshift-ci:prow-job <ARTIFACTS_DIR>
2. Your goal is the UNDERLYING root cause, not the first error in the log — follow the
skill's drill-down and causal-chain requirements, consulting the sosreport and the
performance graphs when relevant.
3. After the analysis completes, save the FULL report output (including the --- STRUCTURED SUMMARY --- block) to:
<WORKDIR>/jobs/prs-job-<N>-pr<PR>-<JOB_NAME_SUFFIX>.txt
Use the Write tool to save the file. The file must contain the complete analysis report.
4. After saving, reply with EXACTLY one line: DONE <output-file-path>. Do NOT include the
report text in your reply."
Substitute <JOB_NAME>, <JOB_URL>, and <JOB_ID>/<BUILD_ID> from the prepare script's JSON output (job, url, build_id fields).
Launch ALL agents (all releases + PRs) in a single message as foreground agents (do NOT use run_in_background). Foreground agents in the same message run concurrently — this is just as fast as background agents but keeps your turn active until all complete.
Say "Analyzing N jobs in parallel..." in your message text alongside the Agent tool calls.
When all agents return, immediately proceed to Step 3 in the same turn. Do NOT stop or end your turn between Step 2 and Step 3.
Goal: Search Jira for existing bugs matching each failure. Results are embedded in the HTML report.
Actions:
Collect all release versions from <ARGUMENTS> into a comma-separated list (e.g., 4.19,4.20,4.21,4.22)
Check for rebase PR source identifiers from the PR jobs JSON (e.g., rebase-release-4.22). Append them to the source list.
Launch a single microshift-ci:create-bugs foreground agent in dry-run mode with all sources:
Agent: subagent_type=general_purpose, prompt="Run /microshift-ci:create-bugs <all-sources-comma-separated>"
The agent produces:
<WORKDIR>/bugs/bug-matches-<source>.json for each source (mapping files with open bugs data for the Bugs tab)<WORKDIR>/report-create-bugs.txt — merged report covering all releases and rebase sourcesWhen the agent returns, immediately proceed to Step 4 in the same turn. Do NOT stop or end your turn between Step 3 and Step 4.
Error Handling:
IMPORTANT: This step is MANDATORY. The task is incomplete without it. You MUST run this even if previous steps produced errors.
Goal: Deterministically aggregate results and generate the HTML report.
Actions:
Run the finalize script:
bash plugins/microshift-ci/scripts/doctor.sh finalize --component microshift --workdir <WORKDIR> <ARGUMENTS>
The script deterministically:
aggregate.py for each release and for PRs → summary.json filescreate-report.py → report-microshift-ci-doctor.htmlReport the script's output to the user
Actions:
Example Output:
Summary:
Periodics:
Release 4.19: 3 failed periodic jobs
Release 4.20: ERROR - data collection failed
Release 4.21: 0 failed periodic jobs
Release 4.22: 12 failed periodic jobs
Pull Requests:
2 rebase PRs with 5 total failed jobs
HTML report generated: <WORKDIR>/report-microshift-ci-doctor.html
/microshift-ci:doctor 4.19,4.20,4.21,4.22
/microshift-ci:doctor 4.21,4.22
/microshift-ci:doctor 4.22
gsutil CLI must be installed for GCS access (uses anonymous access on public buckets)gh CLI must be authenticated with access to openshift/microshiftpcp-export-pcp2json — for PCP graph generationmatplotlib Python package — for PCP graph plotting--create after this command)/microshift-ci:create-bugs --create)/microshift-ci:doctor-refresh regenerates the HTML report from existing data. Use it after /microshift-ci:create-bugs --create to include newly created bugsprepare script downloads all artifacts upfront so prow-job agents use local paths (no redundant downloads)prepare script also clones the MicroShift source to <WORKDIR>/src/microshift with per-release worktrees (--repo openshift/microshift); clone failure is non-fatal — agents record the absence in analysis_gaps and proceedfinalize script runs aggregation and HTML generation in one call<WORKDIR> subdirectories (jobs/, bugs/) — no improvised names