Help us improve
Share bugs, ideas, or general feedback.
From scaffolding
3-tier markdown memory protocol (shared/agent/conversation) for cross-session knowledge. TRIGGER when: reading or writing agent memory files, choosing which memory tier an insight belongs in, or starting a task needing prior context. SKIP: vector recall (use semantic-memory-mcp); distilling conversations into candidates (use distill).
npx claudepluginhub komluk/scaffolding --plugin scaffoldingHow this skill is triggered — by the user, by Claude, or both
Slash command
/scaffolding:agent-memoryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
3-tier persistent memory system for cross-session knowledge accumulation.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
3-tier persistent memory system for cross-session knowledge accumulation.
| Tier | Path | Scope | Written By | Read By |
|---|---|---|---|---|
| Shared | .scaffolding/agent-memory/shared/KNOWLEDGE.md | Whole project | Any agent | All agents |
| Agent | .scaffolding/agent-memory/agents/{agent-name}/MEMORY.md | Per agent | Owning agent | Own agent + architect |
| Conversation | .scaffolding/conversations/{conversation_id}/agent-memory/context.md | Per conversation | Any agent in conversation | Agents in same conversation |
Memory is auto-injected into agent context via recall_for_agent() in the task execution pipeline. When a task starts, the system reads:
.scaffolding/agent-memory/shared/KNOWLEDGE.md (always).scaffolding/agent-memory/agents/{agent-name}/MEMORY.md (when agent_name is known).scaffolding/conversations/{id}/agent-memory/context.md (when conversation_id is provided)This means agents receive memory context automatically. Manual reading on first turn is optional but recommended for verifying latest data.
Before starting work, optionally read available memory for latest content (skip if files don't exist):
.scaffolding/agent-memory/shared/KNOWLEDGE.md.scaffolding/agent-memory/agents/{your-agent-name}/MEMORY.mdconversation_id is provided in task context: Read .scaffolding/conversations/{conversation_id}/agent-memory/context.mdWrite significant findings to the appropriate tier:
Save here:
Do NOT save:
Save here:
Do NOT save:
Save here:
Do NOT save:
Agents with disallowedTools: Write, Edit (architect, reviewer) cannot write to .scaffolding/agent-memory/ directly. These agents should report findings in their output, and writable agents in the same conversation chain can persist them.
[YYYY-MM-DD] for time-sensitive entriesconfidence (high/medium/low) and last_verified [YYYY-MM-DD]; re-verify against live code/config before asserting a stale point-in-time fact, and down-grade or remove ones that no longer holdFile-based memory (this skill) is the hot layer — auto-injected into every agent context under a 200-line budget, so keep it lean: stable, high-level facts and pointers only. Push detailed prose and rarely-needed, fuzzy-discoverable knowledge to the cold layer (vector store) via the semantic-memory-store skill — it only surfaces on similarity match and carries no per-turn token cost. Durable source-of-truth facts still get a file here; the cold copy is for natural-language recall.
Local-only carve-out: secrets and memory/MCP recovery procedures NEVER go to the cold vector store. Recovery info must stay readable when the store itself is down (a 401 means you cannot query the store to learn how to fix it), and secrets must not be embedded in a remote/shared backend. Keep these as file memory only.
If memory files don't exist, create them with the appropriate header:
# Shared Knowledge
<!-- Cross-agent project knowledge. Max 200 lines. -->
# {Agent Name} Memory
<!-- Agent-specific patterns and lessons. Max 200 lines. -->
# Conversation {conversation_id} Context
<!-- Decisions and findings for this conversation chain. -->
Conversation memory is always available via file-based recall. When a task runs with a conversation_id, the system reads context.md and injects it into the agent's context. No database setup is required for conversation-tier memory.
The /learn command closes the loop between a finished conversation and the
memory tiers above. It distills one conversation into knowledge candidates (via
the distill skill's Conversation-Scoped Distillation mode) and routes each
candidate back into this memory system.
| Candidate kind | Target tier | File |
|---|---|---|
| Cross-cutting project fact | Shared | .scaffolding/agent-memory/shared/KNOWLEDGE.md |
| Domain-specific pattern or lesson | Agent | .scaffolding/agent-memory/agents/{name}/MEMORY.md |
| Decision relevant only to the active chain | Conversation | .scaffolding/conversations/{id}/agent-memory/context.md |
Ingestion is propose-then-confirm: /learn prints the proposed memory diff
and applies it only on explicit confirmation. Writes respect the 200-line
KNOWLEDGE.md limit — overflow routes to the most relevant agent file per the
distill overflow rule. Applied entries become auto-injected context on the next
task.
If a candidate is a repeatable procedure rather than a situational fact (per
distill's Skill Promotion Criterion), it is not written to memory. Instead
/learn proposes a /create-skill invocation with a pre-filled draft, escalating
the knowledge into a first-class auto-invokable skill. Memory holds facts; skills
hold reusable how-to procedures.