Agent Skills: Progress Skill

On-demand situational awareness — fresh git/PR snapshot plus continuation, distilled into one concrete "next action" suggestion. Use mid-session when you've lost track, after a compaction, or starting a new work block. Trigger on "where was I", "what's next", "progress", "what should I do now", "/progress".

UncategorizedID: matteocervelli/llms/progress

Install this agent skill to your local

pnpm dlx add-skill https://github.com/matteocervelli/llms/tree/HEAD/.codex/skills/progress

Skill Files

Browse the full folder contents for progress.

Download Skill

Loading file tree…

.codex/skills/progress/SKILL.md

Skill Metadata

Name
progress
Description
On-demand situational awareness — fresh git/PR snapshot plus continuation, distilled into one concrete "next action" suggestion. Use mid-session when you've lost track, after a compaction, or starting a new work block. Trigger on "where was I", "what's next", "progress", "what should I do now", "/progress".

Progress Skill

Purpose

Fills the routing gap that SessionStart leaves open. SessionStart injects data; /progress interprets it and tells you what to do next.

Use mid-session when you've lost track, after a context compaction, or at the start of a new work block.

What it does NOT do: Re-fetch GitHub issues, CHANGELOG, or codebase map — those are already in session context from SessionStart. Running /progress will not flood your context window.

Usage

/progress              # current repo only (default)
/progress --all        # cross-repo: show recent work from all projects
/progress --no-memory  # skip memory recall entirely (fastest, git-only)

No subcommands at v1. One command, one compact output.

Workflow

Step 0 — Memory context (skip if --no-memory)

Run the memory recall command with a hard 10-second timeout. If the command fails, times out, or returns empty or invalid JSON ([], whitespace, non-JSON output), silently skip this step and proceed to Step 1 — this enrichment must never block the rest of /progress.

Default (/progress): scope to current repo only via --project. With --all: query all repos (omit --project, use --deep --since).

# Detect current repo name (same logic as memory injection hook)
CURRENT_REPO=$(git remote get-url origin 2>/dev/null | sed 's/.*\///' | sed 's/\.git$//')
# Fallback: directory name
CURRENT_REPO=${CURRENT_REPO:-$(basename "$PWD")}

# Compute ISO date for 3 days ago (macOS: date -v-3d, Linux: date -d '3 days ago')
SINCE_DATE=$(date -v-3d +%Y-%m-%d 2>/dev/null || date -d '3 days ago' +%Y-%m-%d 2>/dev/null || echo "")

# Default: scope to current repo
# With --all: cross-repo (drop --project, add --deep --since)
if [[ "$FLAGS" == *"--all"* ]]; then
  RECALL_FLAGS="--deep ${SINCE_DATE:+--since "$SINCE_DATE"}"
else
  RECALL_FLAGS="--project "$CURRENT_REPO""
fi

timeout 10 uv run --project ~/.claude/skills/memory/recall \
  python ~/.claude/skills/memory/recall/scripts/memory_recall.py \
  "recent work" $RECALL_FLAGS --compact --limit 5 2>/dev/null

Parse the JSONL output (one JSON object per line). Each line has: project, branch, date, summary. Compact mode pre-filters short/empty summaries, so results are already clean.

Filter out empty results — discard any entry where summary is empty or where project is an empty string.

Group by project — keep only the most recent session per project (highest date). Cap at 3 entries total.

Extract issue references from each summary — look for bare #N and owner/repo#N patterns.

Cross-reference extracted issues. For each session with a non-empty branch, the branch name often encodes the project context. For the repo identity, run git remote get-url origin in the current directory and parse owner/repo from the URL. Bare #N references belong to that repo.

For each unique owner/repo identified (at most 3 across all sessions), fetch open issues:

gh issue view N -R owner/repo --json number,title,state,labels \
  --jq 'select(.state=="OPEN") | {number,title,labels}' 2>/dev/null

Use labels to extract priority. Priority inference: look for a label matching P0, P1, P2, P3 (case-insensitive). If the title starts with [P0]/[P1]/[P2]/[P3] (following the project's naming convention), extract it from there. If no priority signal found, treat as P3.

Store these results — they feed the "Where you left off" section and the routing engine in Step 4.

Step 1 — Fresh git snapshot

Run these commands to get current (not session-start) state:

git status --short
git log --oneline -3
git branch --show-current

# Release awareness
LAST_TAG=$(git describe --tags --abbrev=0 --match "v*" 2>/dev/null)
UNRELEASED_COUNT=$(git log --no-merges --oneline "${LAST_TAG:-$(git rev-list --max-parents=0 HEAD)}..HEAD" 2>/dev/null | wc -l)
RELEASE_TAG_AT_HEAD=$(git tag --points-at HEAD | grep '^v' | head -1)

Step 2 — PR check

gh pr list --state open --json number,title,headRefName 2>/dev/null || echo "Not a GitHub repo or gh not configured"

Step 3 — Continuation check

Read .claude/memory/local/continuation.md if it exists. Extract the first meaningful line (skip blank lines and the auto-header). This is fresher than what was auto-loaded at session start.

Step 4 — Routing engine

Analyze the collected state and output the Situation Report (see format below) followed by one → Next Action recommendation.

Apply these rules in priority order:

| State | Suggestion | | ------------------------------------------------------------- | --------------------------------------------------------------------- | | Staged files in git | /pre-commit — staged changes ready for validation | | Unstaged changes on feature/* or fix/* | /review changes — review before staging | | On feature/*/fix/* with commits, no open PR | /pr-creator — branch has unreleased work | | Open PR exists | /review pr --pr N then /pr-merge when ready | | Continuation mentions specific in-progress task | Resume that task (name it explicitly) | | Memory (Step 0) surfaces P0/P1 open issue from recent session | /implementation --issue N — resume highest-priority cross-repo work | | HEAD tagged v* (just released) | Post-release: /release verify tags, close milestone, plan next | | On main, clean, >10 unreleased commits | Release candidate — run /release plan to scope a version | | On main with uncommitted changes | Unusual state — clarify before proceeding | | Clean state, no continuation, no open PRs | /story plan or /release plan — what's next on the backlog? |

If multiple rules match, apply the highest-priority one only.

Output Format

Keep the total output under 25 lines.

## Situation
- Branch: <branch-name> (<N commits ahead of main> | clean)
- Working tree: <staged/unstaged summary, or "clean">
- Release: <last-tag> + <N> unreleased commits
- Open PRs: <"None" or "#N title">

## Last Session
<one-line summary from continuation.md, or "No continuation found">

### Where you left off (last 3 days)
- <project> (<YYYY-MM-DD>): <one-line summary of what was happening>
  → Open issue: <repo>#<N> — <title>
- <project> (<YYYY-MM-DD>): <one-line summary>
  → No open issues referenced

Suggested next: <repo>#<N> (<priority>, last touched N days ago)

## → Next Action
/<skill> — <one-sentence rationale>

"Where you left off" rules:

  • Show at most 3 project entries, most recent first by started_at.
  • Omit the entire section (including the header) if Step 0 produced no results.
  • Each entry is exactly 2 lines: summary line + issue status line.
  • Truncate the one-line summary to ~100 characters if needed.
  • "Suggested next" picks the highest-priority open issue across all entries. Priority order: P0 > P1 > P2 > P3. Ties broken by recency (most recently active project wins). Omit if no open issues were found.

Related Skills

  • /memory recall — underlying retrieval engine powering Step 0
  • /pre-commit — full validation before commit
  • /review changes — companion review of uncommitted changes
  • /pr-creator — create PR from current branch
  • /pr-merge — merge an open PR
  • /story plan — plan next sprint from backlog
  • /release plan — scope next version release
Progress Skill Skill | Agent Skills