Agent skill

fetching-circleci-logs

Fetches CircleCI job logs via the v1.1 API and displays step-level output. Focuses on failed steps. Use when: CI checks fail on a PR, user shares a CircleCI job URL, user asks to check build logs, 'circleci', 'build failed', 'CI failed', 'check the logs'.

Stars 290
Forks 40

Install this agent skill to your Project

npx add-skill https://github.com/NTCoding/claude-skillz/tree/main/fetching-circleci-logs

SKILL.md

Fetching CircleCI Logs

Fetch step-level build logs from CircleCI jobs using the v1.1 API.

When to use

  • PR checks failed and you need to see why
  • User shares a CircleCI URL (e.g. https://circleci.com/gh/org/repo/169955)
  • User asks to investigate a CI failure

Extract job details from URL

CircleCI URLs follow this pattern:

https://circleci.com/gh/{org}/{repo}/{job_number}

Extract org, repo, and job_number from the URL. If the user provides only a job number, ask for the org/repo or check the current git remote:

bash
git remote get-url origin | sed -E 's|.*github\.com[:/]([^/]+)/([^/.]+).*|\1/\2|'

Fetch logs

Step 1: Get the CircleCI token

bash
grep 'token' ~/.circleci/cli.yml | awk '{print $2}'

If the file doesn't exist or has no token, tell the user to run circleci setup or set the token manually.

Step 2: Fetch job data and display step output

Run this as a single command, substituting {org}, {repo}, and {job_number}:

bash
TOKEN=$(grep 'token' ~/.circleci/cli.yml | awk '{print $2}') && \
curl -s -H "Circle-Token: $TOKEN" \
  "https://circleci.com/api/v1.1/project/gh/{org}/{repo}/{job_number}" | \
python3 -c "
import sys, json, urllib.request
data = json.load(sys.stdin)
for step in data.get('steps', []):
    for action in step.get('actions', []):
        status = action.get('status', '')
        name = action.get('name', '')
        exit_code = action.get('exit_code')
        failed = action.get('failed', False)
        print(f'STEP: {name} | status: {status} | exit: {exit_code}')
        if failed and action.get('output_url'):
            with urllib.request.urlopen(action['output_url']) as r:
                for msg in json.load(r):
                    print(msg.get('message', '')[:2000])
"

Step 3: Analyze the output

After fetching, summarize:

  1. Which steps failed and why
  2. The relevant error messages (not the full log)
  3. Suggested fix if the cause is clear

Important notes

  • Use API v1.1 — v2 does not return step-level output with log URLs.
  • The output_url is a pre-signed S3 URL — no additional auth needed to fetch it.
  • Truncate log messages to 2000 chars per action to avoid context window bloat.
  • If the API returns 404, the job number is likely wrong or the token lacks access to that project.

Mandatory Checklist

When fetching CircleCI logs, complete this checklist:

  1. Verify the CircleCI token exists in ~/.circleci/cli.yml
  2. Verify org, repo, and job number are correctly extracted from the URL or git remote
  3. Verify you are using the v1.1 API (not v2)
  4. Verify you summarized the failure cause, not just dumped raw logs

Do not proceed to suggest fixes until all checks pass.

Expand your agent's capabilities with these related and highly-rated skills.

NTCoding/claude-skillz

fix-it-never-work-around-it

Stops execution and fixes root cause when commands, builds, scripts, or tools fail unexpectedly. Triggers on workaround language: 'directly', 'instead', 'alternatively', 'skip', 'fall back', 'work around', 'isn't working', 'broken', 'manually'. Activates on any unexpected non-zero exit code or process failure.

290 40
Explore
NTCoding/claude-skillz

typescript-backend-project-setup

Sets up NX monorepo for TypeScript backend projects optimized for AI-assisted development. Delegates to NX commands where possible, patches configs as last resort. Triggers on: 'set up typescript backend project', 'create backend project', 'initialize typescript backend', 'create monorepo', or when working in an empty project folder.

290 40
Explore
NTCoding/claude-skillz

critical-peer-personality

Professional, skeptical communication style. Never over-enthusiastic, verifies before agreeing, challenges constructively, proposes instead of asking preferences. Expert peer who coaches, not serves. Triggers on: composing responses, agreeing with user, making recommendations, giving feedback.

290 40
Explore
NTCoding/claude-skillz

lightweight-task-workflow

FOLLOW THE STATE MACHINE IN SKILL.MD. When user says 'continue': (1) FIRST: Run pwd, (2) Announce STATE: CHECK_STATUS, (3) Read .claude/session.md to check Status field, (4) Route based on Status. NEVER auto-advance tasks. NEVER use TodoWrite. NEVER create git commits.

290 40
Explore
NTCoding/claude-skillz

questions-are-not-instructions

Engage with what the user said before taking action. Triggers on: questions ('?'), feedback ('this is wrong', 'that doesn't look right', 'there are issues'), challenges ('why did you', 'have you considered'), criticism ('this isn't working', 'I don't like'), observations ('I notice', 'it seems like'), naming a skill or concept. STOP and respond to the user's actual words before doing anything.

290 40
Explore
NTCoding/claude-skillz

lightweight-design-analysis

This skill analyzes code for design quality improvements across 8 dimensions: Naming, Object Calisthenics, Coupling & Cohesion, Immutability, Domain Integrity, Type System, Simplicity, and Performance. Ensures rigorous, evidence-based analysis by: (1) Understanding code flow first via implementation-analysis protocol, (2) Systematically evaluating each dimension with specific criteria, (3) Providing actionable findings with file:line references. Triggers when users request: code analysis, design review, refactoring opportunities, code quality assessment, architecture evaluation.

290 40
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results