Add /roundup cross-project status command
Fans out a read-only reader per repo over AGENTS.md/ROADMAP.md, folds in the standards inbox, and synthesizes one priority-grouped to-do list across all projects (including untriaged inbox items and proposed new projects). Reads and reports only — prioritizing across projects stays with the user.
This commit is contained in:
@@ -17,7 +17,7 @@ The global layer lives here and is wired into `~/.claude` by **directory symlink
|
|||||||
file added under `adapters/` is live immediately — no per-file linking:
|
file added under `adapters/` is live immediately — no per-file linking:
|
||||||
|
|
||||||
- `~/.claude/commands` → `adapters/claude/commands/` — global slash commands (`/retrofit`,
|
- `~/.claude/commands` → `adapters/claude/commands/` — global slash commands (`/retrofit`,
|
||||||
`/handoff`, `/full-eval`, `/capture`, `/triage`).
|
`/handoff`, `/full-eval`, `/capture`, `/triage`, `/roundup`).
|
||||||
- `~/.claude/agents` → `adapters/claude/agents/` — global subagents (reviewer, evaluator,
|
- `~/.claude/agents` → `adapters/claude/agents/` — global subagents (reviewer, evaluator,
|
||||||
security-auditor, doc-auditor, exerciser, researcher, janitor, portability-checker,
|
security-auditor, doc-auditor, exerciser, researcher, janitor, portability-checker,
|
||||||
start9-spec-checker).
|
start9-spec-checker).
|
||||||
@@ -88,9 +88,13 @@ should carry this so any vendor's agent surfaces pending items at session start:
|
|||||||
these wait for the new-repo bootstrap and are never triaged into an existing repo.
|
these wait for the new-repo bootstrap and are never triaged into an existing repo.
|
||||||
- The git-tracking standard ("What git tracks") is now in `portability.md`, and this repo's
|
- The git-tracking standard ("What git tracks") is now in `portability.md`, and this repo's
|
||||||
`.gitignore` follows it.
|
`.gitignore` follows it.
|
||||||
- Specced in `ROADMAP.md`, not built: `roundup` (next up), the `new-project` bootstrap, the
|
- `/roundup` is built: a cross-project status report that reads every repo's
|
||||||
cross-repo quality-gate standard (linters/hooks/CI), and the optional SessionStart hook.
|
AGENTS.md/ROADMAP.md plus the inbox and groups all to-dos by priority — reads and reports
|
||||||
|
only; deciding focus stays with the user.
|
||||||
|
- Specced in `ROADMAP.md`, not built: the `new-project` bootstrap, the cross-repo
|
||||||
|
quality-gate standard (linters/hooks/CI), and the optional SessionStart hook.
|
||||||
- The portable inbox-check line is still not in *other* repos' AGENTS.md nor the retrofit
|
- The portable inbox-check line is still not in *other* repos' AGENTS.md nor the retrofit
|
||||||
playbook template — threading it (and the canonical `.gitignore`) into bootstrapping is a
|
playbook template — threading it (and the canonical `.gitignore`) into bootstrapping is a
|
||||||
ROADMAP item.
|
ROADMAP item.
|
||||||
- Next: build `roundup`, then thread the standards into `retrofit-playbook.md`.
|
- Next: thread the standards into `retrofit-playbook.md`; then build the quality-gate hook
|
||||||
|
or the `new-project` bootstrap.
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
description: Cross-project status roundup — read every repo's AGENTS.md/ROADMAP.md plus the inbox and compile one priority-grouped to-do list across all projects
|
||||||
|
argument-hint: [optional focus, e.g. "only P0/P1" or a subset of repos]
|
||||||
|
allowed-tools: Bash, Read, Grep, Glob, Agent, Write
|
||||||
|
---
|
||||||
|
|
||||||
|
Produce a portfolio-wide status roundup across all my projects under `~/Projects`.
|
||||||
|
Optional focus from me (may be empty): $ARGUMENTS
|
||||||
|
|
||||||
|
Your complete orchestration guide — how to discover repos, the read-only reader you fan out
|
||||||
|
per repo, the inbox pass, and the report format — is at:
|
||||||
|
|
||||||
|
~/Projects/standards/guides/roundup.md
|
||||||
|
|
||||||
|
Read it in full first, then follow it exactly. If you cannot read that file, stop and report
|
||||||
|
precisely that — do not improvise the roundup.
|
||||||
|
|
||||||
|
Read and report only: gather and group by the priorities you find, but do not rank the
|
||||||
|
projects against each other or tell me what to work on — deciding the best use of time is
|
||||||
|
mine. After you present the report, help me reason about ordering only if I ask.
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
# Cross-project roundup — orchestration guide
|
||||||
|
|
||||||
|
*Substance file per the portability protocol. Vendor wrappers (e.g.
|
||||||
|
`adapters/claude/commands/roundup.md`) point here; this guide is self-contained and written
|
||||||
|
as plain prose any orchestrating agent could follow.*
|
||||||
|
|
||||||
|
You produce one **portfolio-wide status report** across all of the user's projects: what
|
||||||
|
each is, where it stands, and every open to-do gathered into a single priority-grouped list
|
||||||
|
— including items still sitting un-triaged in the inbox, not yet pushed down to any repo.
|
||||||
|
|
||||||
|
**Your job is to read and report, not to decide.** Gather faithfully and group by the
|
||||||
|
priority signals you find; do **not** rank the projects against each other or tell the user
|
||||||
|
what to work on. Choosing the best use of time is a conversation the user has on top of this
|
||||||
|
report — your output is the evidence-backed inventory that makes that conversation possible.
|
||||||
|
You run in the main thread, so after presenting you can help the user reason about ordering
|
||||||
|
if they ask — but only then, and only with their input.
|
||||||
|
|
||||||
|
## Phase 1 — Discover (no deep reading)
|
||||||
|
|
||||||
|
- List the candidate projects: the immediate subdirectories of `~/Projects` that are git
|
||||||
|
repos (e.g. `ls -d ~/Projects/*/.git`). Skip non-repo folders; note any you skip.
|
||||||
|
- Include the standards repo — its ROADMAP holds the cross-cutting tooling work — but label
|
||||||
|
its items as the meta/tooling layer so they're easy to tell apart from product work.
|
||||||
|
- Honor any focus the user gave (a subset of repos, or "only P0/P1").
|
||||||
|
|
||||||
|
## Phase 2 — Fan out (one read-only reader per repo)
|
||||||
|
|
||||||
|
Delegate to a read-only reader subagent per repo (e.g. the `Explore` agent), in parallel
|
||||||
|
where your tooling allows. Give each the repo path and this exact ask:
|
||||||
|
|
||||||
|
> Read only this repo's `AGENTS.md` (especially its `## Current state` section) and
|
||||||
|
> `ROADMAP.md` if present. Return, compactly: a one-line description; the current state
|
||||||
|
> (what's done, what's in progress and where it stands); the concrete next steps listed; and
|
||||||
|
> the ROADMAP backlog items with any priority markers. Quote priorities/labels verbatim; do
|
||||||
|
> not invent or re-rank. If a file is missing, say so. Read nothing else; do not review code.
|
||||||
|
|
||||||
|
Separately, read the inbox yourself: `~/Projects/standards/INBOX.md`. Collect the unchecked
|
||||||
|
items — these are captured-but-not-yet-triaged, the work that hasn't reached a repo's ROADMAP
|
||||||
|
yet. Keep `(new)` / `(new:…)` items apart: they're proposed *new* projects, not tasks in an
|
||||||
|
existing one.
|
||||||
|
|
||||||
|
Wait for all readers before synthesizing. If a reader fails or a repo has neither file, note
|
||||||
|
it honestly rather than dropping the repo.
|
||||||
|
|
||||||
|
## Phase 3 — Synthesize (one report)
|
||||||
|
|
||||||
|
Present ONE report in the chat. Default to showing it inline; if the user wants a tracked
|
||||||
|
snapshot they can diff over time (like `EVALUATION.md`), offer to write it to
|
||||||
|
`~/Projects/standards/STATUS.md` — their call, and don't commit it yourself.
|
||||||
|
|
||||||
|
Structure:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Roundup — <date>
|
||||||
|
Repos scanned: <list> (skipped/failed: <list with reason>)
|
||||||
|
|
||||||
|
## Per-project snapshot
|
||||||
|
<repo> — <one-line state>; in progress: <…>; next: <…>
|
||||||
|
... one block per repo, 1–3 lines each ...
|
||||||
|
|
||||||
|
## Priority queue (all projects + untriaged inbox)
|
||||||
|
P0 → P3, every actionable item once, each one line:
|
||||||
|
[Px] item — source: <repo> | inbox(untriaged) — evidence pointer
|
||||||
|
Items with no priority signal go under "Unprioritized — needs triage", never dropped.
|
||||||
|
|
||||||
|
## Not yet pushed down (inbox)
|
||||||
|
The untriaged inbox items, grouped by target project — these exist nowhere but the inbox.
|
||||||
|
|
||||||
|
## Proposed new projects
|
||||||
|
The (new)/(new:name) inbox items — ideas awaiting the new-repo bootstrap.
|
||||||
|
|
||||||
|
## Gaps
|
||||||
|
Repos missing AGENTS.md or a Current state; stale-looking states; anything that blocked a reader.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- Read-only. The only file you may write is `STATUS.md`, and only if the user asks for it.
|
||||||
|
- Quote priorities and states as found; never re-rank projects or recommend what to do next
|
||||||
|
unprompted — that's the user's call.
|
||||||
|
- Preserve every item; if you can't place one, list it under "needs triage" rather than
|
||||||
|
dropping it.
|
||||||
|
- If a reader fails or a repo can't be read, report it honestly rather than papering over it.
|
||||||
|
- If blocked, report exactly what blocked you — never guess or fabricate a project's state.
|
||||||
Reference in New Issue
Block a user