Agent Skills: /workflow:preflight

|

UncategorizedID: laurigates/claude-plugins/workflow-preflight

Install this agent skill to your local

pnpm dlx add-skill https://github.com/laurigates/claude-plugins/tree/HEAD/workflow-orchestration-plugin/skills/workflow-preflight

Skill Files

Browse the full folder contents for workflow-preflight.

Download Skill

Loading file tree…

workflow-orchestration-plugin/skills/workflow-preflight/SKILL.md

Skill Metadata

Name
workflow-preflight
Description
|

/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 |