About workflow-preflight
workflow-preflight is a coding skill that checks repository and branch state before starting or resuming work. It combines Git checks with GitHub issue and pull request searches to flag existing work, divergence, and conflicts.
Key features
- 01Fetches and prunes remote references
- 02Checks related issues, pull requests, and branches
- 03Reports branch divergence and uncommitted changes
- 04Detects potential merge conflicts
- 05Summarizes repository readiness
Use cases
- 01Before beginning a feature or issue
- 02After returning to work following a break
- 03Before creating a pull request branch
- 04Before launching parallel agents
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill workflow-preflightAfter installing, type/workflow-preflightin Claude Code to confirm it loaded.
Details
From the project README/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 |
Comments
Markdown supported