Aller au contenu principal

Skill: ops-standup

Fork

Cross-repo morning briefing. Aggregation of recent commits, PRs, CI, blockers and priorities of the day. Trigger when the user wants a standup, an activity summary, or to know what happened.

Configuration

PropertyValue
Contextfork
Allowed toolsRead, Glob, Grep, Bash
Keywordsops, standup, no activity

Detailed description

Daily Standup — Morning Briefing

Objective

Scan one or several git repos to generate a structured briefing: recent commits, open PRs, CI state, blockers and priorities of the day.

Read-only mode — no code modification.

Phase 1: Repo detection

Determine the repos to scan

  1. If paths are provided as arguments: use them
  2. If a parent directory is provided: scan 1 level for .git/
  3. Otherwise: use the current directory

Options

FlagDefaultDescription
--since <duration>24hTime window (24h, 48h, 7d)
--summary-onlynoShort version without per-repo details

Phase 2: Data collection

For each repo, collect:

2.1 Recent commits

# Commits from the last 24h grouped by author
git log --since="24 hours ago" --format="%h %an: %s" --no-merges

Group by author, count commits, identify types (feat/fix/refactor/docs).

2.2 Pull Requests and CI

If gh is available:

# Open PRs
gh pr list --state open --json number,title,author,reviewDecision,statusCheckRollup

# Recently merged PRs
gh pr list --state merged --json number,title,mergedAt --limit 10

Classify the PRs:

  • To review: reviewDecision = REVIEW_REQUIRED
  • Approved: reviewDecision = APPROVED (ready to merge)
  • CI failing: statusCheckRollup contains FAILURE
  • Pending: statusCheckRollup contains PENDING

2.3 CI state

If gh is available:

# Latest workflow runs
gh run list --limit 10 --json status,conclusion,name,createdAt

Identify:

  • Failing workflows (conclusion = failure)
  • Stuck workflows (status = in_progress for > 30 min)
  • Recently cancelled workflows

2.4 Stale branches

# Branches with no commit for 7+ days (excluding main/develop/release)
git for-each-ref --sort=-committerdate --format='%(refname:short) %(committerdate:relative)' refs/heads/ | grep -E "(weeks|months) ago"

2.5 Uncommitted changes

git status --porcelain

Categorize: staged, unstaged, untracked.

Phase 3: Synthesis

Aggregate the data into 4 categories:

What has been done

  • Features delivered (feat commits)
  • Bugs fixed (fix commits)
  • Merged PRs

What is in progress

  • Open PRs and their state
  • Active branches with recent commits

What is blocked

  • PRs with failing CI
  • Stuck or failing workflows
  • PRs awaiting review for > 48h

Suggested priorities

  • Approved PRs to merge
  • CI failures to fix
  • Pending reviews
  • Stale branches to clean up

Phase 4: Output

Technical view (default)

# Standup — YYYY-MM-DD

## [repo-name]

### Activity (last 24h)
- X commits by Y authors
- Z PRs merged, W open

### Recent commits
| Author | Commits | Summary |
|--------|---------|--------|
| [name] | N | feat: ..., fix: ... |

### Pull Requests
| # | Title | Status | CI |
|---|-------|--------|-----|
| #123 | ... | To review | Passing |

### CI Health
| Workflow | Last run | Status |
|----------|------------|--------|
| ci.yml | 2h ago | Passing |

### Alerts
- [!] PR #456 with failing CI for 12h
- [!] Branch feature/old inactive for 3 weeks

---

## Cross-Repo Synthesis

### To do today
1. [High priority] ...
2. [Medium priority] ...

### Metrics
- Features delivered: X
- PRs to handle: Y
- CI failures: Z
- Stale branches: W

Summary view (--summary-only)

# Standup Summary — YYYY-MM-DD

Yesterday: X features delivered, Y bugs fixed, Z PRs merged.
Today: W PRs to review, V CI failures to fix.
Blockers: [list or "none"].

Graceful degradation

Missing toolImpactFallback
gh not installedNo PRs nor CISignal it, show only commits
Remote repo unreachableNo remote statusUse local data
No recent commitsEmpty sectionIndicate "No activity"

Rules

  • ALWAYS use read-only commands (git log, git status, gh pr list)
  • NEVER modify files, branches, or PRs
  • NEVER invent data — if a source is unavailable, signal it
  • Clearly indicate data gaps
  • If gh is not available, mention it and show what is available

Automatic triggering

This skill is automatically activated when:

  • The matching keywords are detected in the conversation
  • The task context matches the skill's domain

Triggering examples

  • "I want to ops..."
  • "I want to standup..."
  • "I want to no activity..."

Context fork

Fork means the skill runs in an isolated context:

  • Does not pollute the main conversation
  • Results are returned cleanly
  • Ideal for autonomous tasks

See also