From mf
Read project memory at session start and produce a tight "where we are + next action" brief, then wait for direction. Use when the user says "spin up", "catch up", "resume", "where were we", "get up to speed", or at the beginning of a fresh session on a project that already has memory. Works on any project primed with /mf:prime; reads from the Claude Code auto-memory dir under ~/.claude/projects/<slug>/memory/.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mf:spinupThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Get up to speed on a project without starting any new work. Read persistent memory in priority order, summarise, then **stop** and wait for user direction.
Get up to speed on a project without starting any new work. Read persistent memory in priority order, summarise, then stop and wait for user direction.
Auto-memory lives at ~/.claude/projects/<slug>/memory/ where <slug> is $PWD with every / replaced by -.
bash -c 'echo ~/.claude/projects/$(echo "$PWD" | sed "s|/|-|g")/memory'
Confirm CLAUDE.md, SOUL.md, PROJECT.md exist in the project root. If any are missing:
/mf:prime from the project root./mf:prime silently — pre-existing files with the same name matter.If the memory dir doesn't exist, is empty, or only contains MEMORY.md with no referenced files, say so and stop. The project is either fresh or the memory was wiped. Invite the user to describe the task — don't fabricate context.
Read these files in order. Stop once you have enough signal to act on the user's current question (or the next action implied by the memory). Budget: 3–6 files typically.
MEMORY.md — always first. The index tells you what's available and how each file is described. Read every line.project_state.md (or equivalently-named "current state" file — check MEMORY.md's descriptions) — almost always second. The canonical "where we are + pending actions" file in the standard auto-memory layout.user_prefs.md + collaboration_style.md — short, high-value for tone calibration on the first message of a new session. Read if present, skip silently if not.results_*.md — only if project_state.md points at it or the user's question is about results.feedback_*.md — selectively. Read only the ones whose descriptions indicate load-bearing relevance to the immediate task. Skim-reading all of them is expensive and rarely helpful.reference_*.md — only if the user or project state mentions an external system (issue tracker, experiment tracker, cloud resource).If you've read 6 files and still feel you need more, you're over-reading. Stop, summarise what you have, and ask the user where to focus.
For each specific claim you plan to put in the summary:
| Claim type | Verification |
|---|---|
| File path | ls or Read to confirm it exists |
| Function / symbol / flag name | grep for it |
| Git / branch / commit state | git status, git log -1, git branch --show-current |
| Remote-host run results | Do not verify. Flag as "according to memory" |
| User preferences / collaboration style | Trust (not time-sensitive) |
| Closed-hypothesis histories | Trust (not time-sensitive) |
If verification fails, don't cite the claim. If the correction is unambiguous (e.g. file renamed, commit rolled back), update the memory file to reflect current reality. Otherwise flag the drift and ask the user.
Emit a tight summary, ≤ 20 lines, in this shape. Adapt section headings to the project's reality — omit sections with no content rather than padding:
## Where we are
<1–3 sentences: current state, most recent decision, what just happened.>
## Pending / next action
<The one concrete next step: a command to run, a decision to make, or an
experiment waiting for a result. If more than one, list max 3 and flag
which is primary.>
## Open threads
- <thread 1, one line>
- <thread 2, one line>
## Load-bearing reminders
- <feedback memory directly relevant to the current task, one line>
Do not start work. Do not propose new experiments. Do not offer unsolicited analysis. Wait for the user to direct.
User says: "Spin up."
Actions:
MEMORY.md.project_state.md — finds current-state + pending action.user_prefs.md and collaboration_style.md — short, read both.MEMORY.md descriptions for feedback entries that look relevant to the pending action; read the one that matches.git status to confirm the branch and working-tree state match what memory says.Result: ~15-line summary, one concrete next action, user responds with "OK, go" or a redirect.
User says: "Catch up."
Actions:
User says: "Spin up — I want to work on the data pipeline."
Actions:
MEMORY.md, project_state.md.MEMORY.md descriptions to find memory files relevant to "data pipeline" specifically. Read those.Symptom: The computed path under ~/.claude/projects/ has no files, but the project has been worked on before.
Cause: The slug transformation differs from Claude Code's internal convention on this host, or the project was worked on from a different CWD.
Solution: Run ls ~/.claude/projects/ | grep <project_name_fragment> to find the actual dir. If multiple matches exist (e.g. the project was opened from both /repos/foo and /repos/foo/src), prefer the one with the most recent MEMORY.md.
Symptom: project_state.md says "see src/old_module.py" but the file isn't there.
Cause: Code moved / was renamed / was deleted since the memory was written.
Solution: Don't cite the dead reference. Either (a) find the replacement with grep and update the memory file to match, or (b) flag the drift in the brief and ask the user to clarify. Don't guess.
Symptom: You've read 10+ files and you're still "gathering context".
Cause: Trying to understand everything before acting, instead of trusting the index.
Solution: Stop reading. MEMORY.md descriptions exist precisely so you don't have to read every file. If the descriptions don't clearly point at what you need, ask the user to scope the spinup.
Symptom: After producing the brief, you immediately propose a next experiment, edit, or command.
Cause: Misreading "the next action is X" in memory as a directive.
Solution: Stop. Emit the brief. Wait for the user to say "go" or to redirect. The memory's "next action" is a report, not a command.
feedback_*.md entrySymptom: You quote a feedback memory that is several sessions old and no longer reflects the user's current stance.
Cause: Treating memory as ground truth without verification.
Solution: When citing feedback, preface with "according to memory: ..." and invite correction if the user's stance has shifted. The user's live feedback always overrides stored memory.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub emaballarin/ccplugins --plugin mf