ワンクリックで
ci-fix-port
// Fetch CI build failure logs from GitHub Actions or PRs, diagnose the root cause, and fix the failing port or patch. Use when: a CI job fails after a port upgrade, a patch no longer applies, or a build option changed upstream.
// Fetch CI build failure logs from GitHub Actions or PRs, diagnose the root cause, and fix the failing port or patch. Use when: a CI job fails after a port upgrade, a patch no longer applies, or a build option changed upstream.
Fetch CI build failure logs from GitHub Actions or PRs, diagnose the root cause, and fix the failing port or patch. Use when: a CI job fails after a port upgrade, a patch no longer applies, or a build option changed upstream.
Upgrade cmake-toolset ports to newer upstream versions. Use when: checking releases, resolving dependency pins, validating patches, handling cross-compiling host tools, or reviewing CI impact.
| name | ci-fix-port |
| description | Fetch CI build failure logs from GitHub Actions or PRs, diagnose the root cause, and fix the failing port or patch. Use when: a CI job fails after a port upgrade, a patch no longer applies, or a build option changed upstream. |
| argument-hint | pr=<number|url>; run=<id|url>; job=<name>; port=<name>; mode=diagnose|fix |
Use this skill to pull build failure information from GitHub Actions, diagnose the cause, and fix the affected port or patch.
Repository: atframework/cmake-toolset
The agent needs access to GitHub data. Use one of:
mcp_github_*) if availablegh CLI via terminal if installed and
authenticatedfetch_webpage tool to read GitHub web pagesInvoke-RestMethod (PowerShell) or curl
for the GitHub REST APICheck tool availability in order and use the first that works.
Parse user input for:
pr= — PR number or URLrun= — Actions run ID or URLjob= — job name filter (e.g., gcc.no-rtti.test)port= — port name hint (optional)mode= — diagnose (read-only) or fix (default)If the user gives a PR URL or number:
If the user gives a run ID or URL:
job= if provided, otherwise pick all
failed jobs.gh CLI# List failed jobs in a run
gh run view <run-id> --repo atframework/cmake-toolset
# Get specific job log
gh run view <run-id> --repo atframework/cmake-toolset \
--log-failed
# List jobs for a workflow run
$owner = "atframework/cmake-toolset"
$base = "https://api.github.com/repos/$owner"
Invoke-RestMethod `
"$base/actions/runs/<run-id>/jobs" |
Select-Object -ExpandProperty jobs |
Where-Object { $_.conclusion -eq "failure" } |
Select-Object name, conclusion, html_url
# Download job log (needs auth token)
Invoke-RestMethod `
"$base/actions/jobs/<job-id>/logs" `
-Headers @{
Authorization = "Bearer $env:GITHUB_TOKEN"
}
fetch_webpageUse fetch_webpage with the job URL from the Actions
UI to read the log output directly.
Parse the log output and classify the failure:
| Pattern | Likely Cause |
|---|---|
error: patch failed / git apply error | Patch no longer applies cleanly |
Unknown CMake command / option error | Deprecated or renamed build option |
fatal error: … not found | Missing dependency or include order |
undefined reference / link error | ABI or library mismatch |
FAILED: … test | Runtime test regression |
Could not find … package | find_package failure, version mismatch |
| Cross-compile host tool error | Host-tool not built or not found |
Record:
Based on diagnosis, apply the appropriate fix:
Follow patch-workflow.md:
test/third_party/packages/.git apply --check <patch>..cross.patch
separately.test/third_party/packages/ afterward.Follow deprecated-options.md:
test/CMakeLists.txt for correct include
order.MODULE.bazel / CMakeLists.txt
for changed dependency pins.Follow cross-compilation.md.
If the fix is a patch, test it locally:
cd test/third_party/packages/<port>-<version>
git apply --check <new-patch>
Review test/CMakeLists.txt,
.github/workflows/build.yaml, and ci/do_ci.*
for related job combinations that may be affected.
Summarize: what failed, root cause, files changed, and any remaining risks.
cmake-format -i on every modified
.cmake, .cmake.in, and CMakeLists.txt file
(excluding test/third_party/ and
test/build_jobs_*/). Alternatively run
bash ci/format.sh to format the entire tree.
CI will reject unformatted files..cross.patch separately from normal
patches.test/third_party/packages/ after
patch testing.