Up To Date
Get current before doing work. Goal: a short situational brief so you build on
the latest code with full context. Read-only by default. Never mutate a dirty
tree, never force, never discard local work without explicit confirmation.
Proactive use
When work is about to start in a repo with a remote, invoke this without being
asked: announce in one line ("Running up-to-date on ") and proceed.
Proactive runs stay strictly read-only — the sync decision (step 7) still
requires explicit OK.
Steps
- Confirm it's a git repo with a remote. If not, say so and stop — there's
nothing to sync.
- Local state:
git status --short and git stash list. Note uncommitted
changes, untracked files, stashes. This gates everything below.
- Fetch:
git fetch --all --prune. (Fetch is safe; it changes nothing
local.)
- Divergence: current branch vs its upstream —
git rev-list --left-right --count @{upstream}...HEAD. Report ahead/behind.
No upstream (new local branch, or detached HEAD) → that command fails; say
so plainly, fall back to origin/<default-branch> for the comparison, and
note the branch is unpushed. Never report "in sync" from a failed command.
- Recent activity:
git log --oneline -15 on the branch, and the same for
the default branch if you're not on it. Summarize what changed, not every
line.
- Open work (if
gh is available and the remote is GitHub): gh pr list
and gh issue list. Surface anything touching the files you're about to
work on.
- Sync decision:
- Clean + behind only → offer
git pull --ff-only. Do it only on confirm.
- Diverged (ahead and behind) → explain; recommend rebase or merge; ask.
- Dirty → do NOT pull. Report the dirty state and let the user decide.
- Library currency (only if asked or
docs arg given): for the key deps in
play, use context7 (resolve-library-id → query-docs) to pull current API
docs, so code targets today's API, not stale memory.
Output: the brief
- Branch + sync state (ahead/behind, clean/dirty) in one line.
- Recent commits — 2–4 line summary of what's new.
- Open PRs/issues relevant to the intended work (or "none touching this").
- Warnings — dirty tree, diverged history, stale deps.
- Recommended first action — one line.
Rules
- Report only what commands return. Never invent commit messages, PR titles, or
authors.
- No mutating command (
pull, rebase, merge, checkout, stash pop)
without explicit user OK.
- If
gh is missing or unauthenticated, skip that section and say so — don't
guess at remote state.
When not to use
- No remote → nothing to sync; say so in one line and start the work.
- Mid-task re-checks in a repo already briefed this session —
git fetch +
git status answer it without the full brief.
Hand-offs
- Brief delivered → start the actual task on the now-current tree.
- The task is a new app/feature/workstream with no design docs →
architect
next, before code.
Done when
The user knows: what branch they're on, whether it's behind/ahead/clean, what
changed recently, what open work overlaps, and the one safe next action.
Global rules
Apply on every run — canonical home ~/.claude/CLAUDE.md:
- Ground everything. Only what's given or verified; never invent files, APIs, or facts. Unknown → say "I don't know" or state the assumption.
- No tokenmaxing. Lead with the answer; keep an output budget; no filler, no restating the question.
- Agent discipline. Read before you edit; small reversible changes; ask when blocked, don't guess; report failures honestly.
- Commits are the user's alone. Author = the user; never add an AI co-author or
Co-Authored-By/credit line, and don't mention AI in commit messages.
1---2name: up-to-date3description: Preflight sync + situational brief before repo work: fetch origin, ahead/behind divergence, recent commits, open PRs/issues, dirty-state warnings, one recommended first action. Read-only — never pulls or rewrites a dirty tree without explicit OK. Use proactively before starting work in any repo with a remote, especially shared or long-untouched ones. Also on "up-to-date", "sync first", "pull latest", "catch me up on the repo". Not for repos without a remote or quick mid-task re-checks.4---56# Up To Date78Get current before doing work. Goal: a short situational brief so you build on9the latest code with full context. **Read-only by default. Never mutate a dirty10tree, never force, never discard local work without explicit confirmation.**1112## Proactive use1314When work is about to start in a repo with a remote, invoke this without being15asked: announce in one line ("Running up-to-date on <repo>") and proceed.16Proactive runs stay strictly read-only — the sync decision (step 7) still17requires explicit OK.1819## Steps20211. **Confirm it's a git repo with a remote.** If not, say so and stop — there's22 nothing to sync.232. **Local state:** `git status --short` and `git stash list`. Note uncommitted24 changes, untracked files, stashes. This gates everything below.253. **Fetch:** `git fetch --all --prune`. (Fetch is safe; it changes nothing26 local.)274. **Divergence:** current branch vs its upstream —28 `git rev-list --left-right --count @{upstream}...HEAD`. Report ahead/behind.29 No upstream (new local branch, or detached HEAD) → that command fails; say30 so plainly, fall back to `origin/<default-branch>` for the comparison, and31 note the branch is unpushed. Never report "in sync" from a failed command.325. **Recent activity:** `git log --oneline -15` on the branch, and the same for33 the default branch if you're not on it. Summarize what changed, not every34 line.356. **Open work (if `gh` is available and the remote is GitHub):** `gh pr list`36 and `gh issue list`. Surface anything touching the files you're about to37 work on.387. **Sync decision:**39 - Clean + behind only → offer `git pull --ff-only`. Do it only on confirm.40 - Diverged (ahead *and* behind) → explain; recommend rebase or merge; ask.41 - Dirty → do NOT pull. Report the dirty state and let the user decide.428. **Library currency (only if asked or `docs` arg given):** for the key deps in43 play, use context7 (resolve-library-id → query-docs) to pull current API44 docs, so code targets today's API, not stale memory.4546## Output: the brief4748- **Branch** + sync state (ahead/behind, clean/dirty) in one line.49- **Recent commits** — 2–4 line summary of what's new.50- **Open PRs/issues** relevant to the intended work (or "none touching this").51- **Warnings** — dirty tree, diverged history, stale deps.52- **Recommended first action** — one line.5354## Rules5556- Report only what commands return. Never invent commit messages, PR titles, or57 authors.58- No mutating command (`pull`, `rebase`, `merge`, `checkout`, `stash pop`)59 without explicit user OK.60- If `gh` is missing or unauthenticated, skip that section and say so — don't61 guess at remote state.6263## When not to use6465- No remote → nothing to sync; say so in one line and start the work.66- Mid-task re-checks in a repo already briefed this session — `git fetch` +67 `git status` answer it without the full brief.6869## Hand-offs7071- Brief delivered → start the actual task on the now-current tree.72- The task is a new app/feature/workstream with no design docs → `architect`73 next, before code.7475## Done when7677The user knows: what branch they're on, whether it's behind/ahead/clean, what78changed recently, what open work overlaps, and the one safe next action.7980## Global rules8182Apply on every run — canonical home `~/.claude/CLAUDE.md`:83- **Ground everything.** Only what's given or verified; never invent files, APIs, or facts. Unknown → say "I don't know" or state the assumption.84- **No tokenmaxing.** Lead with the answer; keep an output budget; no filler, no restating the question.85- **Agent discipline.** Read before you edit; small reversible changes; ask when blocked, don't guess; report failures honestly.86- **Commits are the user's alone.** Author = the user; never add an AI co-author or `Co-Authored-By`/credit line, and don't mention AI in commit messages.