aggregate
Pull learnings and retrospective insights from all registered projects into the central knowledge base. Run periodically to keep cross-project knowledge current.
SKILL.md.claude/skills/aggregate/SKILL.md
GitHubAggregate Cross-Project Learnings
Pull learnings and retro insights from all projects in registry.yaml into docs/process/aggregation-log.md.
Steps
Read
registry.yamlto get the list of managed projects with their paths.Then drop every entry with
aggregate: false, before you read anything. These are client engagements. Their learnings and retros must never reachaggregation-log.md, which is a shared fleet artifact — pulling a client's docs into it is the exact cross-contamination a clean-room separation is supposed to prevent, and it cannot be undone by deleting the lines later.Build the project list first, remove the excluded entries, say out loud which ones you removed, and only then start step 2. Filtering as you go does not work:
git pullin step 2 and the file reads in step 3 have both already happened by the time you would notice.Ensure freshness of each project's main worktree:
- Run
git -C <path> pull --ff-onlyto update to latest origin/main - If pull fails (dirty worktree, non-ff), warn the user and note the discrepancy
- Report freshness status to the user before proceeding
- Run
For each project, read:
<path>/<docs.learnings>(typicallydocs/process/learnings.md)<path>/<docs.retros>(typicallydocs/process/retrospective.md)
Compare against
docs/process/aggregation-log.mdto identify new entries that haven't been aggregated yet. Avoid duplicating entries already present.Add a new top-level section
## YYYY-MM-DDtodocs/process/aggregation-log.mdfor this pass. Append new entries under it, tagged with:- Source project name
- Date (from retro entry or current date for learnings)
- Category (if present in the original)
Format:
## YYYY-MM-DD ### [Category] (from [project-name], [date]) - [Specific learning or insight]Identify cross-cutting patterns — learnings that appear in multiple projects or that would benefit all projects. Use these prompts when scanning across projects:
- Recurring failures: Is the same kind of error showing up in multiple projects? Fix it once — in the generic skill, template, or rule — rather than project-by-project.
- Slow tasks: What made some tasks drag? Missing context, ambiguous requirements, bad tooling choices? Update the relevant skill to surface the gap earlier.
- Successful patterns: What kinds of work consistently go well? Document what made them work so other projects can lean on the same approach.
- Skill gaps: Are peers frequently deferring or bouncing things back to the user that they should be able to handle? The skill definition is probably too vague — tighten it.
Add findings to a "Cross-Cutting Patterns" subsection of the new date section with:
- The pattern description
- Which projects it was observed in
- Whether it should be propagated (and how — skill update, CLAUDE.md update, etc.)
Before marking a pattern as needing propagation, reconcile against what's already been addressed:
- Read
templates/skills/andtemplates/rules/— if the fix is already in a template, note it as done - Read
docs/process/propagation-log.md— if it was already pushed to projects, note that - Check whether the pattern predates a major tooling adoption (e.g., superpowers) — if the recommended fix is now covered by a shared plugin, flag it as "already addressed by [plugin]" rather than a new action
- Only flag a pattern as needing propagation if it's absent from templates, absent from the propagation log, and not covered by an installed shared plugin
Commit the updated
docs/process/aggregation-log.mdwith message:knowledge: aggregate learnings from [N] projectsSummarize what was aggregated:
- How many new entries from each project
- Any cross-cutting patterns identified
- Recommendations for
/propagateactions