wigo/SKILL.md
This skill should be used when the user asks "what's going on", "wigo", "status", "where was I", "what were we doing", "catch me up", "tree status", "branch status", or wants a comprehensive situational briefing on the current git tree, session history, and associated PR. Also triggered by the /wigo command.
npx skillsauth add pmatos/skills wigoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce a comprehensive situational briefing on the current git worktree. Gather signals from git state, Claude session logs, and GitHub to reconstruct context and suggest actionable next steps.
Run Steps 1, 2, and 3 in parallel (they are independent). Then run Steps 4-6 sequentially.
Run the following commands via Bash and record the output:
git rev-parse --show-toplevel
git branch --show-current
git status --short
git stash list
git diff --stat
git diff --cached --stat
git log --oneline -1
From the results, determine:
git log --oneline -10
Determine the default branch (main or master):
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||')
if [ -z "$DEFAULT_BRANCH" ]; then
if git show-ref --verify --quiet refs/heads/main 2>/dev/null; then
DEFAULT_BRANCH=main
elif git show-ref --verify --quiet refs/heads/master 2>/dev/null; then
DEFAULT_BRANCH=master
else
DEFAULT_BRANCH=$(git branch --list --format='%(refname:short)' | head -1)
fi
fi
echo "$DEFAULT_BRANCH"
Then show commits ahead of it:
git log --oneline <default-branch>..HEAD
From the results, summarize:
Reconstruct what we've been working on from Claude's session logs.
git rev-parse --show-toplevel again)./ with -. For example, /home/user/myproject becomes ~/.claude/projects/-home-user-myproject/..jsonl files in that directory, sorted by modification time (most recent first):ls -t ~/.claude/projects/<encoded-path>/*.jsonl 2>/dev/null
python3 -c "
import json, sys, os
log_dir = sys.argv[1]
if not os.path.isdir(log_dir):
print('No Claude session history found for this project.')
sys.exit(0)
files = sorted(
[f for f in os.listdir(log_dir) if f.endswith('.jsonl')],
key=lambda f: os.path.getmtime(os.path.join(log_dir, f)),
reverse=True
)[:5]
if not files:
print('No Claude session logs found.')
sys.exit(0)
for fname in files:
path = os.path.join(log_dir, fname)
session_id = fname.replace('.jsonl', '')
print(f'\n=== Session: {session_id} ===')
with open(path) as fh:
for line in fh:
line = line.strip()
if not line:
continue
try:
obj = json.loads(line)
except json.JSONDecodeError:
continue
msg = obj.get('message', {})
role = msg.get('role')
if role not in ('user', 'assistant'):
continue
content = msg.get('content', '')
# Handle content that is a list of blocks
if isinstance(content, list):
texts = []
for block in content:
if isinstance(block, dict):
if block.get('type') == 'text':
texts.append(block['text'][:300])
elif block.get('type') == 'tool_result':
pass # skip tool results
elif block.get('type') == 'tool_use':
texts.append(f'[tool: {block.get(\"name\", \"?\")}]')
elif isinstance(block, str):
texts.append(block[:300])
content = ' | '.join(texts)
elif isinstance(content, str):
content = content[:300]
else:
continue
if not content.strip():
continue
# Skip system reminders
if '<system-reminder>' in content:
continue
print(f' [{role}] {content[:200]}')
" "$HOME/.claude/projects/<encoded-path>/"
ls -t ~/.claude/sessions/*.json 2>/dev/null | head -5
For each, read the file and extract startedAt, cwd, and kind.
Using the branch name from Step 1, search for an associated pull request:
gh pr list --head <branch-name> --state all --json number,title,state,url,statusCheckRollup,reviews,mergeable,isDraft,createdAt,updatedAt --limit 1
If the result is empty, also try a broader search:
gh pr list --state open --json number,title,headRefName,url --limit 50
and filter the output for the current branch name.
If no PR is found, record "No PR associated with this branch" and skip Step 5.
If a PR was found in Step 4, gather detailed status:
CI checks:
gh pr checks <number> --json name,state,bucket,description,workflow
Report each check's name and pass/fail/pending status.
Reviews:
From the PR JSON's reviews field (already fetched in Step 4), report:
If review data wasn't in the Step 4 response, fetch it:
gh pr view <number> --json reviews --jq '.reviews[] | "\(.author.login): \(.state)"'
Merge status:
Report the mergeable state (MERGEABLE, CONFLICTING, or UNKNOWN) and whether the PR is a draft.
Recent activity:
gh pr view <number> --json comments --jq '{ total: (.comments | length), recent: [.comments[-3:] | .[] | "\(.author.login) (\(.createdAt)): \(.body[0:150])"] }'
Report the total comment count. If there are recent comments (last 24 hours), display them.
Combine all findings into a structured report. Use this template:
## WIGO: <branch-name>
### Working Tree
- **Status**: Clean / Dirty
- N files modified (unstaged)
- M files staged
- K untracked files
- **Stashes**: none / list them
### What We've Been Doing
<Narrative synthesized from session logs and git history — what was the goal,
what has been accomplished so far, what was the last thing worked on>
### Branch Progress
- **N commits** ahead of <default-branch>
- Recent commits:
- `abc1234` — commit message
- `def5678` — commit message
- ...
### Pull Request
- **PR #N**: <title> (<state>)
- URL: <url>
- CI: all passing / N of M checks failing / pending
- Reviews: N approvals / changes requested by @user / no reviews yet
- Mergeable: yes / conflicting / unknown
- Draft: yes / no
- Comments: N total
### Suggested Next Steps
<contextual suggestions — see below>
Analyze the combined state and offer specific, actionable suggestions. Choose from the following based on the situation:
git branch -d <branch>) and switching to the default branch."/cp) to update the PR?"/cp) first, then create a PR?"Always present 2-3 of the most relevant suggestions as a numbered list, phrased as questions so the user can pick one.
data-ai
Upscale raster images with a local OpenCV EDSR super-resolution model, then produce an exact target pixel size. Use when the user asks to upscale, enlarge, super-resolve, make a higher-resolution version, or create a wallpaper/print-size raster from an existing image while preserving the original artwork.
tools
This skill should be used when the user asks to "investigate issue", "investigate
development
This skill should be used when the user asks to "plan this", "make a plan", "create an implementation plan", "how should I implement", "design the implementation", "plan the refactor", "plan the migration", "plan the feature", "break this down into steps", "implementation strategy", "deep plan", "thorough plan", or wants a thorough, multi-phase implementation plan with codebase exploration before writing any code.
tools
This skill should be used when the user asks to "autofix pr", "fix pr locally", "fix ci failures", "fix review comments", "iterate on pr", "fix failing checks", "fix pr comments", "make ci green", "fix the build", "address reviewer feedback", or wants to iteratively fix CI failures and review comments on a GitHub PR from the local CLI.