agentleFS
HermeticOrmusHermeticOrmus/ormus-absorb/SKILL.md

absorb

Skill0 starsChanged 7 months agoMITView on GitHub

Distill session knowledge into persistent memory — project intent, domain understanding, architectural decisions, and vision. The learning ritual.

4 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions4 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 4

    1. brianonbased-dev/HoloScript★ 10same name
    2. agamarora/second-brain★ 2same name
    3. Tcuzzo/backs-aios-skills★ 2same name
    4. Jason-hub-star/model-orchestrator★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 9 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 9

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    After domain modeling discussions (data schemas, taxonomies, business rules)

    line 31
  2. Distinctive:

    After architectural decisions that have a *why* behind them

    line 32
  3. Distinctive:

    When the user shared context about stakeholders, timelines, or vision

    line 33
  4. Very specific:

    Before /compact or session end to preserve understanding

    line 34
  5. Distinctive:

    Read the current memory state:

    line 84
  6. Distinctive:

    Only include sections that have content.

    line 142
  7. Very specific:

    After creating/updating topic files, update the MEMORY.md index:

    line 163
  8. Very specific:

    Add one-line pointer for any new file: - Title -- one-line hook

    line 164
  9. Distinctive:

    Keep entries under 150 chars

    line 165
  10. Distinctive:

    Don't duplicate content — the index points, it doesn't store

    line 166
  11. Distinctive:

    If insights are project-specific instructions (not observations but directives), consider updating the project's CLAUDE.md instead:

    line 170
  12. Distinctive:

    Use Write/Edit tools to persist each insight to the correct file.

    line 184

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/absorb — Session Knowledge Distillation

"What did this session teach us that no file in the repo can?"

Extract project understanding from the current session and persist it to memory. Not code patterns — those live in the code. This captures intent, direction, vision, domain knowledge, and decisions that would otherwise evaporate when context clears.

Memory Location

By default, this skill writes to ~/.claude/memory/. To use a different location, set the CLAUDE_MEMORY_DIR environment variable:

export CLAUDE_MEMORY_DIR="$HOME/my-claude-memory"

Throughout this skill, $MEMORY refers to that directory (${CLAUDE_MEMORY_DIR:-$HOME/.claude/memory}).

When to Use

  • End of a deep session where you learned things about a project's purpose or direction
  • After domain modeling discussions (data schemas, taxonomies, business rules)
  • After architectural decisions that have a why behind them
  • When the user shared context about stakeholders, timelines, or vision
  • Before /compact or session end to preserve understanding

Arguments

/absorb                    — Full session distillation
/absorb @project:name      — Scope to a specific project
/absorb @dry               — Show what would be saved without writing

Phase 1: NIGREDO — Extract Raw Knowledge

Scan the entire conversation for knowledge that is NOT derivable from code, git history, or existing docs.

1.1 Classify Findings

For each insight, classify into exactly one type:

TypeWhat it capturesPersists to
intentWhy a project exists, who it serves, what problem it solvesproject_{name}.md
directionWhere the project is heading, roadmap, phases, prioritiesproject_{name}.md
domainBusiness/domain concepts, taxonomies, terminology, rulesproject_{name}.md or dedicated topic file
decisionArchitectural choices with rationale (the why)project_{name}.md
visionLong-term aspiration, philosophy, design principlesproject_{name}.md
personStakeholder context, roles, preferences, relationshipsproject_{name}.md or user_*.md
feedbackHow the user wants to work, corrections, validated approachesfeedback_*.md
referenceExternal resources, APIs, accounts, credentials contextExisting memory or new reference_*.md
infrastructureServices, ports, configs, deployment topologyMEMORY.md (infrastructure section)

1.2 Build the Prima Materia

For each finding, capture:

- insight: [one-line statement]
  type: [from table above]
  evidence: [what in the session proves this — quote or reference]
  novelty: [new | extends | contradicts | duplicate]
  weight: [critical | important | useful | noise]

Drop anything classified as noise or duplicate.


Phase 2: ALBEDO — Purify Against Existing Memory

Read the current memory state:

cat $MEMORY/MEMORY.md

Then check each relevant topic file:

# If project-scoped, read the project memory
cat $MEMORY/project_{name}.md 2>/dev/null

For each insight:

NoveltyAction
newCreate new entry
extendsMerge into existing entry (append detail, don't duplicate)
contradictsReplace old entry with new truth + rationale
duplicateSkip entirely

Key rule: Real observations from this session beat prior assumptions. If we learned something contradicts an old memory, the new learning wins.


Phase 3: CITRINITAS — Structure for Persistence

3.1 Project Memory Files

For project-scoped insights, organize into a project_{name}.md file with this structure:

---
name: Project Name
description: One-line — what this project is
type: project
---

## Intent
[Why this project exists. The problem it solves. Who it serves.]

## Direction
[Current phase. What's being built now. Near-term priorities.]

## Vision
[Long-term aspiration. What it becomes when "done".]

## Domain Knowledge
[Business concepts, taxonomies, terminology, rules that aren't in the code.]

## Key Decisions
[Architectural choices with WHY. Format: "Decision — because Reason."]

## Stakeholders
[Who's involved, their role, their preferences.]

Only include sections that have content. Don't create empty sections.

3.2 Feedback Files

For workflow preferences, create or update feedback_{topic}.md:

---
name: Feedback topic
description: One-line rule
type: feedback
---

[Rule statement]

**Why:** [reason from session]
**How to apply:** [when/where this kicks in]

3.3 MEMORY.md Index

After creating/updating topic files, update the MEMORY.md index:

  • Add one-line pointer for any new file: - [Title](file.md) -- one-line hook
  • Keep entries under 150 chars
  • Don't duplicate content — the index points, it doesn't store

3.4 Project CLAUDE.md

If insights are project-specific instructions (not observations but directives), consider updating the project's CLAUDE.md instead:

  • Terminology rules ("never use X, always say Y")
  • Build commands
  • Architecture constraints
  • Domain-specific coding rules

CLAUDE.md = instructions for Claude. Memory = observations about the world.


Phase 4: RUBEDO — Write and Verify

4.1 Write Files

Use Write/Edit tools to persist each insight to the correct file. Create new topic files when a project doesn't have one yet.

4.2 Coherence Check

After writing:

  • No duplicate entries across files
  • No secrets or ephemeral data (task IDs, temp paths) in memory
  • Each memory file has correct frontmatter (name, description, type)
  • MEMORY.md index has pointers to all new files
  • Insights are written as durable facts, not session narration
    • Bad: "Today we discovered that the energies table has misclassified entries"
    • Good: "The energies table contains 36 form types — not all are energies. Items with () syntax (eg flight(), Clearing()) are functions/commands, misclassified under form='energy'"

4.3 Potency Report

ABSORBED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Project: {project name or "cross-project"}

Insights captured:
  + {insight 1} [{type}]
  + {insight 2} [{type}]
  ~ {merged with existing} [{type}]
  - {skipped — duplicate/noise}

Files updated:
  {path}  [{N} changes]
  {path}  [created]

Understanding depth: {shallow | moderate | deep}
  shallow  = facts only, no vision/intent captured
  moderate = intent + direction + some domain knowledge
  deep     = full picture: intent, vision, domain, decisions, stakeholders
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

What NOT to Absorb

  • Code patterns, file paths, function signatures — read the code
  • Git history, who changed what — use git log
  • Debugging solutions — the fix is in the commit
  • Anything already in CLAUDE.md files
  • Temporary state (current task, in-progress work)
  • Speculative conclusions from a single data point

The test: "Would a future session benefit from knowing this, AND can't discover it from the codebase?" If both yes, absorb it.


Integration with Other Skills

SkillRelationship
/handoff/absorb captures understanding; /handoff captures task state. Complementary.
/pickupFuture sessions benefit from what /absorb persisted
/compactRun /absorb before /compact to preserve understanding before context compression

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.