Repository Status Reporting

VerifiedSafe

Report where every repository, PR, run and session stands, grouped into done, in flight, not started, or blocked. Re-read state from systems of record to avoid false confidence.

Sby Skills Guide Bot
ProductivityIntermediate
9/8/2026
Claude CodeCodex
#status-report#git#github-cli#ci#agent-sessions

Recommended for

Automated summary

Produces an honest status report across multiple repositories, pull requests, CI runs and agent sessions, grouped into four actionable buckets: done, in progress, not started, blocked on the human.

Strengths

  • Requires re-reading every claim from its source (API, logs, working tree) at report time instead of trusting memory or a peer's report
  • Organises output around what the user can act on, with a "Blocked on the human" section giving the exact command or click
  • Names two commonly misread signals: the --left-right ordering and "stale green" checks that predate a toolchain change
  • Applies an evidence-or-it-is-not-done rule, so each Done line carries a release URL, PR number, check count or duration

Limitations

  • Read-only by design: it inspects state but performs no fixes, re-runs or merges
  • Assumes authenticated gh/git access and treats GitHub as the system of record; other hosts or trackers are not covered
  • Tool-call cost grows quickly because every command must be replayed against all repositories in play, not just the current one
When to use it

Use it when the user has lost track and asks where things stand, for a recap, what is left, or what needs them.

When not to use it

Avoid it when the goal is to change state (merge, re-run CI, fix something) or to get a narrative summary of work rather than a verified inventory.

Security analysis

Safe
Quality score89/100

The skill is a read-only status reporter. Its only shell usage is `gh` and `git` query subcommands (pr list/view, run list, issue list, release view, git status, worktree list, rev-list) against repositories the user names — no writes, no deletions, no network exfiltration, no curl|sh, no secret handling, and no instruction to disable safety checks. The one reference outside the file is a relative link to a sibling skill for addressing other sessions, not an executed dependency. Worst case is a noisy API call or a wrong reading of `--left-right` counts, which the skill itself calls out and guards against.

No concerns found

How this analysis is made

Examples

Multi-repo recap
Where do things stand across acme/api and acme/web? I've completely lost track over the last few days.
What needs me
Give me a status report: what's done, what's still running, and what is blocked waiting on me — include the exact commands or clicks I need to unblock each one.
Stale session check
I started a few background tasks and other agent sessions earlier. Check what's still live, what went idle without answering, and fold all of it into a single status report.

name: status description: Report where every repository, pull request, run and agent session stands, grouped into what is done, what is in flight, what has not started, and what is blocked on the human. Use when the user asks where things stand, says they have lost track, asks for a status or a recap, asks what is left, or asks what needs them. allowed-tools: Bash(gh *), Bash(git *), Read, Glob, Grep

Status

A status report is a reading of the systems of record, written so the user can act on it. It is not a summary of what you remember.

The failure it prevents: an agent works across several repositories for hours, then reports confidently on state it never re-read — crediting itself with a peer's work, calling a thing finished because it pushed a commit. The user then decides on a picture that was never true.

Read before you write

Re-read every claim from its source at report time: the API, the log, the working tree. A peer's report is a claim, not evidence. A push proves bytes moved, never that CI passed. A merge proves nothing about whether the artifact works — that is its own reading.

Run these against every repository in play, not only the one you are standing in:

gh pr list --repo OWNER/NAME --state open --json number,title,isDraft,mergeable,headRefName
gh pr view N --repo OWNER/NAME --json statusCheckRollup   # per open PR: real conclusions
gh run list --repo OWNER/NAME --limit 5 --json name,conclusion,headBranch,createdAt
gh issue list --repo OWNER/NAME --state open --json number,title,labels
gh release view TAG --repo OWNER/NAME --json assets        # 0 assets ships nothing
git status --short && git worktree list                    # uncommitted work; who else holds a tree
git rev-list --left-right --count origin/main...HEAD       # LEFT is behind, RIGHT is ahead

Read what is still moving too: background tasks you started, and other live agent sessions. A session that went idle without answering has not answered — record the silence, so it cannot pass for agreement.

Two readings get misread often enough to name:

  • --left-right order. The left number counts commits on main missing here. Reading it backwards turns "two weeks stale" into "162 ahead" and reverses every conclusion drawn from it.
  • Stale green. A check whose run predates a toolchain, workflow or base change is green about a world that no longer exists. Compare run date to change date before treating it as signal. Say stale green in the report when you see it.

Done when

Every open PR, every run started this session, every uncommitted working tree, and every peer session you contacted appears in exactly one bucket. An item you cannot place goes under Blocked on the human with the reason you could not place it.

The four buckets

Group by what the user can do about it. That is what makes a report actionable.

Done — finished and verified. Each line carries its evidence: a release URL, a PR number, a check count, a test total, a duration. Evidence or it is not done — an unevidenced line belongs in In progress, whatever you believe about it.

In progress — running, and will finish on its own. Say what is being waited on and what will decide it. If a peer session is the thing being waited on, say it may never reply.

Not started / paused — named, with why. Work that was started but never pushed belongs here. So does work you chose to stop.

Blocked on the human — the section with the most value: nothing here moves until the user acts. Permission denials, merge gates, decisions that are theirs, authorizations only they can give. Give the exact command or click.

Rules that keep it honest

  • Report failures plainly, including your own. If you broke it, say you broke it on the same line that says it is fixed.
  • A green no-op is not progress. A pipeline that ran and did nothing, a test that cannot fail, a skipped check — none are evidence.
  • State what you could not verify. An explicit "not reached" is worth more than a confident guess, and it tells the user where to look next.
  • Name the session that did the work. Where ownership is contested, report it as contested rather than resolving it silently.
  • Separate mechanism from judgement. "The classifier refuses this" and "I judged this unwise" are different facts, and the user must be able to tell them apart.
  • Supersede earlier numbers explicitly. If a figure you reported was wrong, give the corrected one and say it replaces the old.

Shape

Group by repository, then by bucket. Bullets, one claim each. Bold the noun that carries the line so it scans. Mark buckets with ✅ / 🔄 / ⏸.

Close with one recommendation and why — not a menu. Where a decision is genuinely the user's, ask exactly one question. Answer in the user's language.

## IX

**Done**
- ✅ **v0.3.1 released with a working artifact** → https://github.com/OWNER/ix/releases/tag/v0.3.1
- ✅ v0.3.0 shipped a file **nobody could load** — I broke it, it is fixed
- ✅ **Nightly CI repaired** — red for 12 days, now pinned

**In progress**
- 🔄 **PRs #283 / #284 / #286** — re-running on the pinned workflow, **no failures**, 4 checks in flight

**Not started**
- ⏸ **Linux / macOS support** — build script fixed locally, workflow unwritten, **nothing pushed**

**Blocked on you**
- ⏸ **`gh pr merge` refused by the auto-mode classifier** — every PR ends up with you

Related

Addressing another session is skills/gaia-interagent/SKILL.md. What this repository claims about itself — the surface a report must not contradict — is README.md, and the exit-code and fail-closed conventions a run's outcome must be read against are documented there.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/repository-status-reporting-mts7ikrb' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/repository-status-reporting-mts7ikrb/download' --output '.skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md.part' && mv '.skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md.part' '.skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Bash(gh *), Bash(git *), Read, Glob, Grep

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md' && test -s '.skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/status' && cp -R '.skill-downloads/repository-status-reporting-mts7ikrb' '.claude/skills/status'

Codex
test -f '.skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md' && test -s '.skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/status' && cp -R '.skill-downloads/repository-status-reporting-mts7ikrb' '.agents/skills/status'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/repository-status-reporting-mts7ikrb'

openskills read 'repository-status-reporting-mts7ikrb'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/repository-status-reporting-mts7ikrb/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills