brainstorming
Structured design dialogue that validates ideas before implementation begins.
awaiting-pr-workflows
Use when needing to check PR workflow status, especially under time pressure or after pushing commits - ensures verification of unpushed changes, commit correlation, and patient waiting for workflows to complete (up to 20 minutes)
Full skill instructions
Wait for GitHub PR workflows to complete while correctly handling unpushed changes, commit correlation, and timing issues.
Core principle: Always verify local state before checking remote workflows. Under pressure, agents skip critical checks.
Use this skill when you need to:
When NOT to use:
BEFORE checking workflow status, verify local/remote sync:
# Check if local branch has unpushed commits
git status
If unpushed commits exist:
Your branch is ahead of 'origin/branch-name' by N commits
Then ask user:
I found N unpushed commits on your local branch.
The PR workflows won't include these changes yet.
Would you like me to push them now? (y/n)
Never skip this check, even under time pressure.
# Get current branch name
BRANCH=$(git branch --show-current)
# Search for PR by branch
gh pr list --head "$BRANCH" --json number,title
If no PR found, ask user:
No PR found for branch '$BRANCH'.
Would you like me to create one? (y/n)
Always check which commits the workflows are testing:
# Get PR head commit
PR_COMMIT=$(gh pr view "$PR_NUMBER" --json headRefOid -q '.headRefOid')
# Get local HEAD commit
LOCAL_COMMIT=$(git rev-parse HEAD)
# Compare (show short SHAs for readability)
PR_SHORT=$(echo $PR_COMMIT | cut -c1-7)
LOCAL_SHORT=$(echo $LOCAL_COMMIT | cut -c1-7)
If commits don't match:
⚠️ Commit mismatch detected:
- PR is testing: $PR_SHORT
- Your local HEAD: $LOCAL_SHORT
The workflows are not testing your latest local changes.
[Proceed with step 1 - check for unpushed changes]
# List recent workflow runs for the PR's head commit
gh run list --commit $PR_COMMIT --limit 5 --json status,conclusion,createdAt
If no runs found:
Wait up to 30 seconds (workflows may be queuing):
for i in {1..6}; do
sleep 5
RUNS=$(gh run list --commit $PR_COMMIT --limit 1 --json databaseId -q '.[0].databaseId')
if [ -n "$RUNS" ]; then
echo "Workflows started!"
break
fi
echo "Waiting for workflows to start... ($((i*5))s elapsed)"
done
If still no runs after 30s:
⚠️ Workflows haven't started after 30 seconds.
This could mean:
- GitHub Actions is experiencing delays
- Workflows are disabled for this repo
- The commit hasn't triggered workflows
Would you like me to:
1. Wait longer (recommended if GitHub is slow)
2. Check workflow configuration
3. Stop waiting
First check if already complete, then poll with exponential backoff up to 20 minutes:
# Check if workflows are already complete
INCOMPLETE=$(gh run list --commit "$PR_COMMIT" --status in_progress,queued --json databaseId | jq 'length')
if [ "$INCOMPLETE" -eq 0 ]; then
echo "✅ All workflows already complete!"
else
# Wait with exponential backoff
MAX_WAIT=1200 # 20 minutes in seconds
INTERVAL=5 # Start with 5 seconds
elapsed=0
while [ $elapsed -lt $MAX_WAIT ]; do
INCOMPLETE=$(gh run list --commit "$PR_COMMIT" --status in_progress,queued --json databaseId | jq 'length')
if [ "$INCOMPLETE" -eq 0 ]; then
echo "✅ All workflows complete!"
break
fi
echo "⏳ $INCOMPLETE workflow(s) still running... (${elapsed}s elapsed, max ${MAX_WAIT}s)"
sleep $INTERVAL
elapsed=$((elapsed + INTERVAL))
# Exponential backoff: 5s, 10s, 20s, 40s, then cap at 60s
INTERVAL=$((INTERVAL * 2))
if [ $INTERVAL -gt 60 ]; then
INTERVAL=60
fi
done
if [ $elapsed -ge $MAX_WAIT ]; then
echo "⚠️ Workflows still running after 20 minutes."
# Report current state and let caller decide what to do
fi
fi
If timeout reached (20 min):
⚠️ Some workflows are still running after 20 minutes:
[List incomplete workflows with gh run list]
This is unusually long. Caller should decide whether to:
1. Wait longer
2. Proceed with current results
3. Check workflow logs for stuck jobs
| Step | Command | Purpose |
|---|---|---|
| Check local changes | git status | Find unpushed commits |
| Find PR | gh pr list --head $BRANCH | Verify PR exists |
| Get PR commit | gh pr view --json headRefOid | What commit is PR testing |
| Get local commit | git rev-parse HEAD | What commit is local HEAD |
| List workflow runs | gh run list --commit $SHA | Find runs for specific commit |
| Check run status | gh run list --json status,conclusion | See if runs complete |
Skipping unpushed check under time pressure
git status first, even if "urgent"Not correlating commits
PR_COMMIT vs LOCAL_COMMITGiving up too early
Not asking about push/PR creation
| Excuse | Reality |
|---|---|
| "They need results ASAP, skip git status" | Takes 1 second. Wrong results waste minutes. |
| "The PR probably has latest commits" | Probably ≠ definitely. Verify with SHAs. |
| "No runs found, must be disabled" | GitHub queues workflows. Wait 30s. |
| "Been 2 minutes, that's long enough" | Workflows take 5-15 min normally. Max is 20. |
| "I'll just check current status quickly" | Quick check = wrong answer if commits don't match. |
| "User wants answer now, not questions" | Wrong answer now < right answer in 2 seconds. |
If you catch yourself thinking:
These are rationalizations. Follow the process.
IMPORTANT: This workflow involves waiting (up to 20 minutes) and produces minimal output.
Run in subagent using Task tool:
Use the Task tool with subagent_type='general-purpose' and give them this skill.
They'll handle the polling and report back results.
User: "Check if CI is passing for my PR"
[Run git status]
→ Found 2 unpushed commits
Me: "I found 2 unpushed commits. The PR workflows won't include
these yet. Would you like me to push them now?"
User: "Yes"
[Run git push]
[Wait for workflows to start - 15 seconds]
→ Workflows started
[Poll every 30s for completion]
→ 3 minutes elapsed, workflows still running
→ 6 minutes elapsed, workflows complete
Me: "✅ All workflows complete for commit a1b2c3d:
- Backend tests: PASSED
- iOS tests: PASSED
- Lint: PASSED"
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