Fetching Circleci Logs

Pulls step-level CircleCI job logs via the v1.1 API and prints only the failed steps

Works with setup

Test report

Verdict
Works with setup
Score
8.4/10
Tested
Jul 21, 2026
Environment
Claude Code 2.x (agent harness)
Upstream re-checked
Aug 10, 2026 · 16497fb

I stood up a local mock CircleCI v1.1 endpoint (a failed job with 5 steps: 2 passing, 2 failing, 1 canceled, with 29,673 chars of jest/tsc log behind output_url) and ran both approaches against it. Baseline (my own instinct: curl the job and pipe to json.tool) produced 1,975 bytes naming which steps failed but containing none of the four diagnostic probes - "Expected: 19.99", "TS2345", "applyDiscount > rounds to 2dp", "1 failed, 27 passed" were all absent; the skill's verbatim command produced 2,362 bytes containing all four, having skipped the passing steps' logs entirely and truncated the 29,673-char message to exactly 2000. I independently confirmed against CircleCI's v1 docs and support material that actions[].{name,status,exit_code,failed} and the pre-signed output_url returning [{message,type,time}] are real fields, not invented, and its git-remote sed helper resolved all 4 common remote formats correctly; the install block placed SKILL.md correctly in a clean throwaway HOME. Two real gaps I observed: the script does not strip ANSI escape codes (I re-ran with realistic colored jest output and got raw \x1b[1m\x1b[31m sequences eating the 2000-char budget), and truncation takes the head of each message, so a tool that prints its error summary last would have it discarded. Verdict is "setup" not "pass" because the one step I could not execute is authentication against the live API - it needs a real CircleCI account token at ~/.circleci/cli.yml, so everything above is measured against a shape-faithful mock rather than production CircleCI. Trigger phrasings judged - SHOULD fire: "The CircleCI check on my PR is red, pull the logs and tell me what broke", "https://circleci.com/gh/acme/widgets/169955 why did this fail?", "Build failed on main again, can you check the CI logs?"; should NOT fire: "Our .circleci/config.yml fails to validate, fix the YAML" (config editing, not log fetching) and "The GitHub Actions workflow failed, show me the run logs" (wrong CI provider) - I would correctly load/not-load all 5, though the description's generic "check the logs" keyword is a false-positive risk on non-CI log requests.

Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works

  • Installs cleanly 5/5
  • Triggers reliably 5/5
  • Output vs. baseline 7/10
  • Docs & honesty 4/5

What Fetching Circleci Logs does

Fetches CircleCI job logs through the v1.1 API, walks the steps/actions tree, and prints output only for steps that failed, truncating each to 2000 characters. Triggers when a CI check fails on a pull request, when a CircleCI job URL is pasted, or on phrases like "build failed", "CI failed", or "check the build logs". Reads the API token from ~/.circleci/cli.yml and derives org/repo from the git remote when only a job number is given.

How to install Fetching Circleci Logs

git clone --depth 1 https://github.com/NTCoding/claude-skillz.git /tmp/fetching-circleci-logs-src
mkdir -p ~/.claude/skills
cp -R /tmp/fetching-circleci-logs-src/fetching-circleci-logs ~/.claude/skills/fetching-circleci-logs
# Single-file skill (SKILL.md only) - no scripts, no deps beyond curl + python3 (both preinstalled on macOS/Linux).
#
# REQUIRED MANUAL STEP - the skill does nothing without a CircleCI API token:
#   brew install circleci && circleci setup
# or write it by hand:
#   mkdir -p ~/.circleci && printf 'host: https://circleci.com\ntoken: YOUR_TOKEN\n' > ~/.circleci/cli.yml
# Create the token at https://app.circleci.com/settings/user/tokens
#
# Plugin-marketplace alternative (this skill is registered in .claude-plugin/marketplace.json):
#   /plugin marketplace add ntcoding/claude-skillz
#   /plugin install fetching-circleci-logs@claude-skillz
#
# Usage: paste a job URL like https://circleci.com/gh/{org}/{repo}/{job_number} and ask why CI failed.

Skills live in ~/.claude/skills/ (global) or .claude/skills/ (per-project). Restart Claude Code after installing.

Commands — how to trigger Fetching Circleci Logs

  • /fetching-circleci-logs Pulls step-level CircleCI job logs via the v1.1 API and prints only the failed steps

It also activates on plain-language prompts like these:

  • Check why the CircleCI build failed
  • Fetch the logs for this CircleCI job URL
  • Show me the failed step in the last CI run

Frequently asked questions

Is the Fetching Circleci Logs skill free?
Yes. The skill itself is free from NTCoding/claude-skillz. SkillProof publishes the install command and an independent test verdict at no cost.
Does Fetching Circleci Logs work with Claude Code?
We tested it with Claude Code 2.x (agent harness) on Jul 21, 2026. Verdict: Works with setup. I stood up a local mock CircleCI v1.1 endpoint (a failed job with 5 steps: 2 passing, 2 failing, 1 canceled, with 29,673 chars of jest/tsc log behind output_url) and ran both approaches against it. Baseline (my own instinct: curl the job and pipe to json.tool) produced 1,975 bytes naming which steps failed but containing none of the four diagnostic probes - "Expected: 19.99", "TS2345", "applyDiscount > rounds to 2dp", "1 failed, 27 passed" were all absent; the skill's verbatim command produced 2,362 bytes containing all four, having skipped the passing steps' logs entirely and truncated the 29,673-char message to exactly 2000. I independently confirmed against CircleCI's v1 docs and support material that actions[].{name,status,exit_code,failed} and the pre-signed output_url returning [{message,type,time}] are real fields, not invented, and its git-remote sed helper resolved all 4 common remote formats correctly; the install block placed SKILL.md correctly in a clean throwaway HOME. Two real gaps I observed: the script does not strip ANSI escape codes (I re-ran with realistic colored jest output and got raw \x1b[1m\x1b[31m sequences eating the 2000-char budget), and truncation takes the head of each message, so a tool that prints its error summary last would have it discarded. Verdict is "setup" not "pass" because the one step I could not execute is authentication against the live API - it needs a real CircleCI account token at ~/.circleci/cli.yml, so everything above is measured against a shape-faithful mock rather than production CircleCI. Trigger phrasings judged - SHOULD fire: "The CircleCI check on my PR is red, pull the logs and tell me what broke", "https://circleci.com/gh/acme/widgets/169955 why did this fail?", "Build failed on main again, can you check the CI logs?"; should NOT fire: "Our .circleci/config.yml fails to validate, fix the YAML" (config editing, not log fetching) and "The GitHub Actions workflow failed, show me the run logs" (wrong CI provider) - I would correctly load/not-load all 5, though the description's generic "check the logs" keyword is a false-positive risk on non-CI log requests.
What is the Fetching Circleci Logs SkillProof Score?
8.4/10 — installs cleanly 5/5, triggers reliably 5/5, output vs. baseline 7/10, docs & honesty 4/5.
How do I install Fetching Circleci Logs?
Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
Can I use Fetching Circleci Logs with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.