diff --git a/AGENTS.md b/AGENTS.md index 9ad2ad7..cb1834f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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: - `~/.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, security-auditor, doc-auditor, exerciser, researcher, janitor, portability-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. - The git-tracking standard ("What git tracks") is now in `portability.md`, and this repo's `.gitignore` follows it. -- Specced in `ROADMAP.md`, not built: `roundup` (next up), the `new-project` bootstrap, the - cross-repo quality-gate standard (linters/hooks/CI), and the optional SessionStart hook. +- `/roundup` is built: a cross-project status report that reads every repo's + 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 playbook template — threading it (and the canonical `.gitignore`) into bootstrapping is a 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. diff --git a/adapters/claude/commands/roundup.md b/adapters/claude/commands/roundup.md new file mode 100644 index 0000000..6e14d0f --- /dev/null +++ b/adapters/claude/commands/roundup.md @@ -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. diff --git a/guides/roundup.md b/guides/roundup.md new file mode 100644 index 0000000..c5c88a4 --- /dev/null +++ b/guides/roundup.md @@ -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 — +Repos scanned: (skipped/failed: ) + +## Per-project snapshot +; 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: | 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.