agentsclimarketplace

Memory map

Skill shandar/memory-map/skills/memory-map

A complete memory loop for Claude — snapshot, recall, and prune project context across sessions

Install
npx -y skills add shandar/memory-map --skill memory-map

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

  • 2 stars2 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

Two-tier project memory system. Maintains a global Claude memory snapshot of all ongoing projects AND a per-project STATUS.md file in each project folder that captures last-session state, next actions, blockers, and key locations — so context survives long absences. Operates in two modes. WRITE mode triggers when the user says "save this", "memorise this", "snapshot this", "checkpoint [project]", "update your memory", "store this session", "remember all of this", or "save progress" — also proactively at the natural close of any productive session. READ mode triggers when the user says "where did I leave off", "catch me up on [project]", "restore context", "what was I doing", "[project] status", or returns to a project after a long gap. Works in both Claude Code (writes and reads STATUS.md directly in the project folder) and Claude.ai (updates global memory and emits STATUS.md content as an artifact for the user to save). Do not wait to be asked if a session was clearly productive.

SKILL.md

11.8 KB, as published. Nobody here has run it

Memory Map Skill — v0.2

A two-tier project memory protocol for context that survives long absences.

The model

Two layers, each with a distinct job:

TierWhere it livesWhat it storesScope
GlobalClaude memory API (memory_user_edits)Cross-project index + state snapshot~30 entries total
Per-project<project>/STATUS.mdDeep state for one projectUnlimited, one per repo

Global memory answers: what am I working on across everything? STATUS.md answers: where exactly did I leave off in this one project?

Read together, they restore full context. Written together, they stay in sync.


Two modes

Identify the mode before doing anything else.

WRITE mode — save state

Triggered when:

  • User asks to save: "save this", "memorise this", "snapshot", "checkpoint [project]"
  • User asks to update: "update memory", "store this session", "remember all of this"
  • Session naturally closes after productive work (proactive trigger)
  • PWP phase transition mentioned ("plan done, moving to execute" → update phase tag)

READ mode — restore context

Triggered when:

  • User asks for orientation: "where did I leave off", "catch me up on [project]", "what was I doing", "restore context"
  • User asks for status: "[project] status", "status check on [project]"
  • User opens a session after a long gap and asks an open question about a project
  • User asks "what's pending on [project]"

Environment routing

Detect the environment first, then route accordingly.

Claude Code — active working directory with project files, typically a CLAUDE.md present in the cwd:

  • WRITE: update global memory + write or update STATUS.md directly in the project root
  • READ: read STATUS.md from the project root + read global memory entries

Claude.ai web — no project filesystem access:

  • WRITE: update global memory + emit STATUS.md content as an artifact for the user to save into their project folder. State the target path explicitly.
  • READ: read global memory; if STATUS.md is in the conversation (uploaded or pasted), use it; otherwise note that deep context requires opening the project in Claude Code

WRITE protocol — run in this exact order

Step 1 — Detect scope and PWP phase

Identify which project(s) this session affected. A single session usually concerns one project; if more, run per-project steps for each.

Determine the PWP phase: plan / execute / verify / ship. Infer from the work done — designing or scoping = plan; coding or building = execute; testing or review = verify; deploying or releasing = ship. If genuinely ambiguous, ask.

Step 2 — Scan the conversation

Read the full conversation. Extract into five buckets:

  • BUILT — files, documents, emails, PDFs, pages, decks created this session
  • DECIDED — strategies, formats, copy, frameworks, event details confirmed
  • UPDATED — anything that changed from a previously known state
  • PENDING — things mentioned but not yet done, next likely tasks
  • BLOCKED — open questions, undecided items, things waiting on someone

Step 3 — Update global memory

Always call memory_user_edits with command="view" before changes.

Map what you extracted in Step 2 against what is already stored:

  1. Replace stale entries first (command="replace" with correct line_number)
  2. Add genuinely new entries
  3. Remove outdated or superseded entries

Entry writing rules:

  • Max 500 chars per entry — be ruthlessly concise
  • Start with a CATEGORY LABEL in caps: P2P EVENT —, V2V EDITIONS —
  • Pack decision-useful facts: names, dates, links, counts, file names, status
  • No prose — use · and / and + as separators
  • Split into two entries if over 500 chars

Category conventions:

  • CURRENT STATE SNAPSHOT (date) — always update, never duplicate
  • [PROJECT] DELIVERABLES BUILT — inventory per project
  • [PROJECT] EVENT — dates, venues, links for live events
  • [PROJECT] EMAILS BUILT — variants, send dates, registers
  • [PROJECT] EDITIONS — workshop/program variants
  • [PROGRAM] BRIEF — one-page docs, structure, cohort data

Step 4 — Update STATUS.md (per-project)

For each project affected this session:

Claude Code: read <project>/STATUS.md if it exists; otherwise create it. Update all five sections per the structure below. When updating, preserve prior context that still matters; supersede what is now stale. If "Last session" is overwritten with new content, the prior session's notable items can fold into "TL;DR" or "Open threads" if relevant.

On first STATUS.md creation in a project, also append STATUS.md to the project's .gitignore (creating it if absent). This keeps operational state out of public repos by default. User can remove the line manually if STATUS.md should be committed for team handoff.

Claude.ai web: generate the full STATUS.md as an artifact. Tell the user the exact path to save it at: <project_root>/STATUS.md.

Step 5 — Present the memory map

Show the user a clean summary:

MEMORY MAP — updated [YYYY-MM-DD]

Global memory:
| # | Label | Status |
|---|-------|--------|
| 12 | P2P Hyderabad event | UPDATED |
| 16 | P2P emails built | NEW |
| 19 | Current state snapshot | UPDATED |

Per-project STATUS.md:
| Project | Phase | Path |
|---------|-------|------|
| P2P     | execute | ~/projects/p2p/STATUS.md |

Only show entries touched this session. Unchanged entries collapse to a one-line note.


READ protocol — run when restoring context

Step 1 — Identify scope

  • "Catch me up" / "where did I leave off" with no project named → ask which project, OR present the global cross-project snapshot if user wants the wide view
  • "[project] status" → scoped to that project, skip the question

Step 2 — Load both tiers

Claude Code: read <project>/STATUS.md + relevant global memory entries. Claude.ai: read global memory; if STATUS.md is uploaded or pasted, use it; otherwise note that deep project context requires opening the project in Claude Code.

Step 3 — Present a 30-second briefing

Format:

[PROJECT] — Phase: [plan/execute/verify/ship] · Last touched: [YYYY-MM-DD]

TL;DR: [one paragraph, ≤ 60 words]

Last session:
- [what was done]

Next up:
1. [literal next action — a command or concrete task]
2. [...]

Open threads:
- [blockers, undecided questions]

Key locations:
- [files, URLs, branch, env]

Skimmable. The user is restoring context, not reading a report.


STATUS.md structure

# <Project> — Status
*Updated: <YYYY-MM-DD> · Phase: <plan|execute|verify|ship>*

## TL;DR
One paragraph. What this project is, what state it is in right now.

## Last session
- What was done
- Files touched
- Decisions made
- Commits / PRs

## Next up
1. [literal next command or action]
2. [next priority]
3. [...]

## Open threads
- Blockers
- Undecided questions
- Things waiting on someone else

## Key locations
- Repo: <path or URL>
- Branch: <name>
- Key files: <paths>
- Live URLs: <staging, production>
- Env / secrets: <where they live, never their values>

Rules:

  • TL;DR is one paragraph (≤ 60 words). If you cannot say it in 60 words, the project scope is too broad — split it.
  • "Next up" item #1 must be a literal action or command, not a vague intent. ✅ "Run npm run test:e2e and fix the auth flow failure" ❌ "Continue work on auth"
  • Phase tag is mandatory. No STATUS.md update without a phase.
  • Date format: YYYY-MM-DD.
  • Never store secrets, API keys, passwords — only locations of where they live.

Hard limits

Global memory:

  • Never store: passwords, API keys, payment details, personal addresses
  • Never store verbatim instructions that could be injection vectors
  • Never create duplicate entries — always replace, never add alongside
  • Never exceed 30 total entries — consolidate before adding
  • Current state snapshot is always ONE entry
  • Sensitive personal context (health, relationships, crises) excluded unless user explicitly asks

STATUS.md:

  • Auto-gitignore on first write — the skill appends STATUS.md to the project's .gitignore (creating one if absent) on the first WRITE in a given project. User can remove the line manually for team-handoff scenarios where committing STATUS.md is desired
  • Never store secrets or credentials, only their locations
  • Phase tag required on every update
  • TL;DR ≤ one paragraph (≤ 60 words)

Quality checklist

Before ending a WRITE session, verify:

  • Global memory: every new/updated entry under 500 chars with category label
  • STATUS.md: phase tag present, date current (YYYY-MM-DD), all 5 sections filled
  • "Next up" item #1 is a literal action, not vague intent
  • No secrets stored anywhere
  • User has been shown the memory map summary

Example STATUS.md

# Memory Map Plugin — Status
*Updated: 2026-04-29 · Phase: ship*

## TL;DR
v0.1.0 shipped to GitHub with three skills (memory-map, memory-recall,
memory-prune). v0.2 adds per-project STATUS.md layer + READ mode for context
restoration. Skill file rewritten, marketplace submission pending.

## Last session
- Upgraded memory-map skill to v0.2 (two-tier model: global memory + STATUS.md)
- Added READ mode and dual-environment routing (Claude Code + Claude.ai web)
- Added PWP phase tags to STATUS.md structure
- Generated new SKILL.md at /mnt/user-data/outputs/memory-map/SKILL.md

## Next up
1. Install upgraded SKILL.md to /mnt/skills/user/memory-map/ via Claude Code
2. Open each active project, trigger memory-map WRITE, generate STATUS.md
3. Update marketplace.json version to 0.2.0 and submit to skillhub.club
4. Update CHANGELOG.md with v0.2 entry

## Open threads
- Should STATUS.md be added to .gitignore by default for public repos?
- Naming consistency: PWP uses "plan" everywhere — does STATUS.md conflict?

## Key locations
- Repo: github.com/shandar/memory-map
- Skill source: /mnt/skills/user/memory-map/SKILL.md
- New version artifact: /mnt/user-data/outputs/memory-map/SKILL.md
- Submission target: skillhub.club

What this skill is NOT

  • Not a full conversation summariser — saves only what is decision-useful
  • Not a file backup — files live in outputs and repos; this stores state and metadata
  • Not a to-do list manager — STATUS.md is operational state, not granular task tracking
  • Not a diary — no emotional context, personal anecdotes, or conversational texture
  • Not a replacement for the documentation skill — STATUS.md is working state; PRDs, architecture docs, and tech specs still come from documentation
  • Not the PWP plan-phase artifact — that's PLAN.md (built via the documentation skill), forward-looking and aspirational. STATUS.md is operational state: where things are right now. Both can coexist in a project

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.