agentsclimarketplace

Consolidate workspace

Skill dbtlr/atlas-skills/skills/consolidate-workspace

Claude Code plugin orchestrating agentic coding sessions — primers, session logs, and knowledge consolidation

Install
npx -y skills add dbtlr/atlas-skills --skill consolidate-workspace

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Consolidate the bound workspace's Session Logs — lift durable knowledge into the workspace (Brief, decisions, notes) and follow-ups into Mimir, mark each log consolidated via norn, and groom the Brief back to small. Scans only this workspace's unconsolidated logs. Primary agent only. (User observations → user.md/memory.md are consolidate-memory's job.)

SKILL.md

9.2 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

consolidate-workspace

Inspect this workspace's record of work, lift durable truth out of it into maintained context, then prune what's now redundant. Durable knowledge routes into the vault workspace; follow-ups route into Mimir.

Primary agent only. Workspace-scoped — it consolidates only the bound workspace (the workspace from .atlas.toml / the Session Primer). The cross-workspace user.md / memory.md regeneration is consolidate-memory, a separate skill.

What consolidation is (and isn't)

Consolidation is a different job from write-session-log. write-session-log keeps the rolling narrative (the Brief's Current State / Learnings) fresh; consolidation lifts durable truth out of the frozen logs into standing homes, and prunes the rolling narrative back down.

  • A fresh-looking Brief is NOT evidence that consolidation has run. Litmus: if a fact only lives in a dated Current-State paragraph or a per-session Learnings bullet, it is not consolidated yet — that's narrative, not maintained context. Don't mistake a maintained Current State for a finished job.
  • The frozen Session Log IS the durable record of what happened. Maintained context carries only the lifted residue: a sharpened term → glossary, a hard-to-reverse decision → ADR, a durable principle → a notes/ file, an open thread → the Brief/board. Don't duplicate the log into the Brief. The same content living in the log and a Current-State paragraph and a Learnings bullet is the bloat signature — triplication is the smell.

Preflight — norn is required

This skill drives norn to find and mark Session Logs; there is no fallback. Check it's available before doing anything:

command -v norn || { echo "consolidate-workspace requires the 'norn' CLI on PATH. Install it and re-run."; exit 1; }
[ -n "$ATLAS_PATH" ] && [ -f "$ATLAS_PATH/.norn/config.yaml" ] || { echo "consolidate-workspace needs ATLAS_PATH set to the atlas vault root (the dir containing .norn/config.yaml)."; exit 1; }

If norn is missing, stop and tell the user to install norn and put it on their PATH — do not fall back to manually scanning artifacts/session-logs/.

Pin the vault on every norn call: norn -C "$ATLAS_PATH" …. norn resolves its vault from $NORN_ROOT, else the current directory — never from ATLAS_PATH. This skill runs from a repo cwd, so a bare norn call operates on whatever .norn is nearest (or none), silently reading or writing the wrong place. Always pass -C "$ATLAS_PATH", including in every sub-agent you dispatch that touches norn.

1. Find this workspace's unconsolidated logs

There's no watermark file. Each Session Log carries a workspace_consolidated flag, so ask norn for the ones still open in this workspace:

norn -C "$ATLAS_PATH" find --eq type:session-log --eq workspace:<workspace> --eq workspace_consolidated:false

Each returned log's Consolidation Candidates section is a unit of work; process oldest-first. The companion flag memory_consolidated belongs to consolidate-memory — don't read or touch it here.

2. Route each candidate — but verify first

Per resources/consolidation-candidates.md. Before routing any candidate, verify it:

  • Dedup — is it already captured (Brief, an ADR, the glossary, or the work tracker)? If so, don't re-add. Don't duplicate.
  • Still applies? — carried tech-debt rots. Check the candidate against the live code/state before filing; a follow-up may already be fixed, moot, or subsumed by other planned work. File only what survives. (Verify, don't assume — this is the operator's standing expectation, not an optional courtesy.)
  • Recurring? — a candidate carried across ≥2 runs is itself the signal to act: file it or force a decision now; don't let it be "carried" again.
BucketRoutes to
Durable knowledgeWorkspace Brief (below the rule) / a decisions/ ADR / a notes/ note
Future opportunitiesa Mimir task (mimir CLI) if the repo tracks work there — never re-grow a task list the workspace has migrated out
  • Promote durable knowledge into the right maintained file; don't duplicate what's already there.
  • For a hard-to-reverse decision, write a real ADR. For a durable principle (a generative rule, not a decision), prefer a notes/ file over bloating the Brief.
  • For a follow-up / tech-debt / open-question, file it where the workspace tracks work, after the dedup + still-applies checks above.
  • User observations are not this skill's bucket. The collaboration-pattern candidates feed shared/user.md / shared/memory.md, which span all workspaces — that's consolidate-memory's job, keyed on the separate memory_consolidated flag. Leave them for it; don't rewrite the shared profile from one workspace's logs.
  • A consolidated Session Log is spent — leave it frozen, but it's now prunable, not a permanent archive.

Mark the log consolidated

Once a log's durable-knowledge + future-opportunity candidates are routed (or confirmed already-captured by the dedup check), mark it so it drops out of the scan:

norn -C "$ATLAS_PATH" set <log path> --field-json workspace_consolidated=true --yes

This touches only workspace_consolidated — never memory_consolidated.

3. Groom the Brief (a consolidation output, not a side task)

Consolidation isn't done until the Brief is small again. Follow resources/workspace-hygiene.md; operationally:

  • Prune the spent narrative. Once a log is consolidated, its narrative is redundant with the frozen log — remove it from the Brief. The below-the-rule rolling sections (Current State, Learnings / Recent Sessions) must not accumulate one entry per session.
  • Current State = current position, not a changelog. It should read as orientation — current position, open explorations, stable working norms — not a session-by-session history. Collapse or drop entries older than the last meaningful boundary (e.g. the last release/milestone).
  • Learnings. Per-session learning bullets duplicate the logs — drop them. Distilled, durable principles worth keeping go to a notes/ file with a one-line Brief pointer, not an ever-growing inline list.
  • Open Questions. Drop resolved items (they're folded into ADRs/glossary as they close); keep only what's genuinely open.
  • Zones. Groom the below-the-rule zone freely; touch the above-the-rule manifest (overview, tech stack, key paths, conventions, navigation) only for factual pointer updates, never to rewrite human-authored content.
  • Sanity check: if the Brief reads like a log of what happened rather than the context a new session needs, it isn't groomed yet.

Stamp the groomed baseline

A freshly-groomed Brief is this workspace's size target — it already reflects the project's legitimate durable complexity, so no hand-tuned number is needed. Once grooming is done, measure the Brief and record the size in its frontmatter as brief_baseline, overwriting any prior value. Measure with the same code-point count the primer uses (not wc -m, whose count is bytes under a C/POSIX locale and would drift from the primer's len() on any multi-byte content):

brief="$ATLAS_PATH/Workspaces/<workspace>/<workspace>.md"
python3 -c 'import pathlib,sys; print(len(pathlib.Path(sys.argv[1]).read_text(encoding="utf-8")))' "$brief"

Stamp that number into the Brief's frontmatter with norn — schema-aware, atomic, and guaranteed to land inside the fenced block (which is the only place the primer trusts):

norn -C "$ATLAS_PATH" set "Workspaces/<workspace>/<workspace>.md" --field-json brief_baseline=<chars> --yes

(An unknown field: brief_baseline warning is expected and benign — the field is agent-maintained, not in the vault schema.) Don't otherwise rewrite the human-authored manifest. build_primer.py reads this baseline and, on each session start, soft-recommends re-running consolidation once the Brief grows past brief_baseline × 1.75 — a non-blocking banner atop the primer. This is the only place the baseline is refreshed, so keep it current with every groom; the small delta from adding the stamp line itself is absorbed by the 75% margin. A Brief with no brief_baseline reads as never-consolidated and the primer recommends an initial pass, which seeds it here.

4. Record the run

There's no state file to advance — the per-log workspace_consolidated flags are the record. Briefly report what was promoted and where, and what was dropped as stale/duplicate.

Notes

Two flags, two skills: workspace_consolidated (this skill) and memory_consolidated (consolidate-memory). Each scans and marks only its own flag via norn, so a log is independently consolidated for its workspace and for the shared profile — neither blocks the other.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.