brainstorming
Structured design dialogue that validates ideas before implementation begins.
getting-pr-workflow-results
Use when needing workflow job results and log commands from PR - automatically waits for workflows to complete, then returns job summaries with gh commands to retrieve logs without loading large logs into context
Full skill instructions
Get workflow job results and provide commands to retrieve logs, without loading logs into main context.
Core principle: Return job summaries + retrieval commands, not actual logs. Let main agent decide what to fetch.
Automatic dependency: This skill automatically waits for workflows to complete before fetching results.
This skill reports workflow status with error details. It NEVER fixes issues.
When you find failures:
Why: This skill runs in a subagent to save tokens. It extracts actionable error information but doesn't try to fix anything. Return the error details and let the caller decide what to do.
Use when you need:
When NOT to use:
Before fetching results, ensure all workflows are complete by following the awaiting-pr-workflows skill.
Skill location: ~/.claude/skills/awaiting-pr-workflows/SKILL.md
Read and execute that skill's workflow to:
Once all workflows are complete, proceed to Step 1 below.
# Get PR's head commit
PR_COMMIT=$(gh pr view $PR_NUM --json headRefOid -q '.headRefOid')
# List workflow runs for that commit
gh run list --commit $PR_COMMIT --json databaseId,name,status,conclusion,workflowName,createdAt
RUN_ID=<from step 1>
# Get jobs in this run
gh run view $RUN_ID --json jobs --jq '.jobs[] | {
name: .name,
conclusion: .conclusion,
url: .html_url,
steps: [.steps[] | select(.conclusion == "failure") | .name]
}'
Check if the run has artifacts that might help with debugging:
# List artifacts for this run
gh run view $RUN_ID --json artifacts --jq '.artifacts[] | {
name: .name,
size: .size_in_bytes,
expired: .expired
}'
Common useful artifacts:
For failed jobs, retrieve the logs and extract key errors:
# Get failed logs
LOGS=$(gh run view $RUN_ID --log-failed)
# Extract pertinent errors (examples):
# - Test failures: grep for "FAILED", "✗", test names
# - Build errors: grep for "error:", "fatal:", compiler messages
# - Lint errors: grep for "warning:", "expected", actual vs expected
# - Runtime errors: grep for "Exception", "Error:", stack traces
What to extract:
What NOT to extract:
For each job, return:
PR #{number} Workflow Results (commit {sha}):
## ✅ Passing Jobs (N)
- Backend Tests
- iOS Lint
- workstation-test-e2e
## ❌ Failing Jobs (N)
### 1. iOS Test (failed after 7m28s)
**Workflow:** `.github/workflows/ci.yml:45`
**Errors found:**
testHealthCheckE2E FAILED Error: Timeout waiting for health endpoint after 30s at HealthCheckTests.swift:142
testSettingsE2E FAILED Error: Element not found: settingsButton at SettingsTests.swift:87
**Artifacts available:**
- `ios-test-results` (2.4 MB) - Test result bundle with screenshots
- `test-logs` (156 KB) - Detailed test logs
**Download artifacts:**
```bash
# Download all artifacts from this run:
gh run download 19727163744
# Download specific artifact:
gh run download 19727163744 -n ios-test-results
# Or view/download from web:
# https://github.com/{owner}/{repo}/actions/runs/19727163744
Retrieve full logs:
gh run view 19727163744 --log-failed
# OR specific job:
gh run view 19727163744 --job 56520688201 --log
Search suggestions:
# Find all errors:
gh run view 19727163744 --log | grep -i error
# Find test failures:
gh run view 19727163744 --log | grep -E "(FAILED|failed|✗)"
# Find specific test:
gh run view 19727163744 --log | grep "testHealthCheckE2E"
Workflow: .github/workflows/workstation-ci.yml:12
Errors found:
error: unused import in src/simulator.rs
--> src/simulator.rs:5:5
|
5 | use std::collections::HashMap;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: variable does not need to be mutable
--> src/main.rs:42:9
Artifacts available: None
Retrieve full logs:
gh run view 19727163743 --log-failed
Search suggestions:
# Find linting errors:
gh run view 19727163743 --log | grep -E "(error|warning)"
# Find formatting issues:
gh run view 19727163743 --log | grep "Diff in"
Summary: 2 failures, 7 passing All results: https://github.com/{owner}/{repo}/pull/{number}/checks
## Finding Workflow File Locations
**Method 1: Via gh API**
```bash
gh api repos/{owner}/{repo}/actions/workflows \
--jq '.workflows[] | {name: .name, path: .path}'
Method 2: Local search
find .github/workflows -name "*.yml" -o -name "*.yaml"
Method 3: From run metadata
gh run view $RUN_ID --json workflowName,workflowDatabaseId
# Then map to file using gh api
grep -E "(FAILED|✗|Error:|Exception)"
grep -B 5 -A 10 "test.*failed" # Context around failures
grep "exit code [1-9]" # Non-zero exits
grep -i "error:"
grep "fatal:"
grep "npm ERR!"
grep "cargo.*error"
grep "warning:"
grep "Diff in"
grep "expected.*found"
#!/bin/bash
# Run in subagent
PR_NUM=$1
PR_COMMIT=$(gh pr view $PR_NUM --json headRefOid -q '.headRefOid')
# Get all runs for this commit
RUNS=$(gh run list --commit $PR_COMMIT --json databaseId,conclusion,name)
# For each run, get job details
echo "$RUNS" | jq -r '.[] | .databaseId' | while read RUN_ID; do
gh run view $RUN_ID --json jobs --jq '.jobs[] | {
name: .name,
conclusion: .conclusion,
url: .html_url
}'
done
# Format and return (pseudo-code)
# - Group by passing/failing
# - Add gh commands for each
# - Add grep suggestions based on job type
Loading full logs into context
Not extracting actual error messages
Extracting too much log content
Not providing grep patterns
Checking runs without commit correlation
--commit $SHA flag| Task | Command |
|---|---|
| List runs for commit | gh run list --commit $SHA |
| Get run details | gh run view $RUN_ID --json jobs |
| Get failed logs only | gh run view $RUN_ID --log-failed |
| Get specific job log | gh run view $RUN_ID --job $JOB_ID --log |
| List artifacts | gh run view $RUN_ID --json artifacts |
| Download all artifacts | gh run download $RUN_ID |
| Download specific artifact | gh run download $RUN_ID -n $ARTIFACT_NAME |
| List workflows | gh api repos/{owner}/{repo}/actions/workflows |
CRITICAL: Always run in subagent.
Use Task tool with subagent_type='general-purpose'.
Give them this skill and the PR number.
They return job summaries + commands.
Why: Prevents loading massive logs into main context. Main agent gets actionable commands instead.
Structured design dialogue that validates ideas before implementation begins.
Comprehensive design intelligence for web and mobile UI/UX across 10 technology stacks.
Comprehensive implementation plans for multi-step tasks, breaking down specs into bite-sized, testable steps.
Introduction to the obra skills system with mandatory skill invocation rules and best practices.
Execute a written implementation plan with critical review and task checkpoints.
Delegate independent tasks to specialized agents working concurrently with isolated context.
Isolated git worktrees with smart directory selection and safety verification.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
README-first repository scanner that extracts commands and classifies reproduction candidates without executing them.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
The world's fastest calendar for remote work
Capture, organize, and utilize your knowledge effortlessly.
Instant Summaries of Audio & Video Interviews with AnySummary
Transform PDFs into engaging mind maps.
Chat with any PDF instantly
Create an optimal daily plan using your voice
A productivity platform to centralize organizational knowledge and workflows with contextual AI assistance.
AskYourPDF Pricing Plans: Tailored to Your Needs