skills/laurigates/claude-plugins/workflow-preflight

workflow-preflight

SKILL.md

/workflow:preflight

Pre-work validation to prevent wasted effort from stale state, redundant work, or branch conflicts.

When to Use This Skill

Use this skill when... Skip when...
Starting work on a new issue or feature Quick single-file edit
Resuming work after a break Already verified state this session
Before spawning parallel agents Working in an isolated worktree
Before creating a branch for a PR Branch already created and verified

Context

  • Repo: !git remote get-url origin
  • Current branch: !git branch --show-current
  • Remote tracking: !git branch -vv --format='%(refname:short) %(upstream:short) %(upstream:track)'
  • Uncommitted changes: !git status --porcelain
  • Stash count: !git stash list

Execution

Step 1: Fetch Latest Remote State

git fetch origin --prune 2>/dev/null

Step 2: Check for Existing Work

If an issue number was provided, check if it's already addressed:

# Check if issue exists and its state
gh issue view $ISSUE --json number,title,state,labels 2>/dev/null

# Check for PRs that reference this issue
gh pr list --search "fixes #$ISSUE OR closes #$ISSUE OR resolves #$ISSUE" --json number,title,state,headRefName 2>/dev/null

# Check for branches that reference this issue
git branch -a --list "*issue-$ISSUE*" --list "*fix/$ISSUE*" --list "*feat/$ISSUE*" 2>/dev/null

If a merged PR exists: Report that the issue is already addressed. Stop. If an open PR exists: Report the PR and ask if the user wants to continue on that branch or start fresh.

Step 3: Verify Branch State

# Check divergence from main/master
git log --oneline origin/main..HEAD 2>/dev/null || git log --oneline origin/master..HEAD 2>/dev/null

# Check if main has moved ahead
git log --oneline HEAD..origin/main -5 2>/dev/null || git log --oneline HEAD..origin/master -5 2>/dev/null

# Check for uncommitted changes
git status --porcelain=v2 --branch 2>/dev/null

Report:

  • Commits ahead/behind remote
  • Uncommitted changes that might interfere
  • Whether a rebase is needed

Step 4: Check for Conflicts

# Dry-run merge to detect conflicts (without actually merging)
git merge-tree $(git merge-base HEAD origin/main) HEAD origin/main 2>/dev/null | head -20

Step 5: Summary Report

Output a structured summary:

Check Status Detail
Remote state fresh/stale Last fetch time
Existing PRs none/open/merged PR numbers if any
Branch state clean/dirty/diverged Ahead/behind counts
Conflicts none/detected Conflicting files
Stash empty/N items Stash contents

Recommendations:

  • If behind remote: "Rebase recommended before starting work"
  • If existing PR found: "PR #N already addresses this - review before duplicating"
  • If dirty state: "Commit or stash changes before branching"
  • If conflicts detected: "Resolve conflicts with main before proceeding"
  • If clean: "Ready to proceed"

Agentic Optimizations

Context Command
Quick remote sync git fetch origin --prune 2>/dev/null
Check existing PRs gh pr list --search "fixes #N" --json number,state,headRefName
Branch divergence git log --oneline origin/main..HEAD
Conflict detection git merge-tree $(git merge-base HEAD origin/main) HEAD origin/main
Compact status git status --porcelain=v2 --branch
Remote tracking git branch -vv --format='%(refname:short) %(upstream:track)'

Quick Reference

Flag Description
git fetch --prune Fetch and remove stale remote refs
git status --porcelain=v2 Machine-parseable status
gh pr list --search Search PRs by content
gh issue view --json Structured issue data
git merge-tree Dry-run merge conflict detection
git log A..B Commits in B but not A
Weekly Installs
43
GitHub Stars
13
First Seen
Feb 9, 2026
Installed on
cline43
github-copilot43
codex43
kimi-cli43
gemini-cli43
cursor43