Memstack state

Use when the user says 'update state', 'project state', 'where was I', or at session start to load current context.

install
source · Clone the upstream repo
git clone https://github.com/cwinvestments/memstack
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/cwinvestments/memstack "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/state" ~/.claude/skills/cwinvestments-memstack-state && rm -rf "$T"
manifest: skills/state/SKILL.md
source content

📍 State — Updating Project State...

Maintain a living document of where you are right now in a project.

Activation

When this skill activates, output:

📍 State — Updating project state...

Then execute the protocol below.

Context Guard

ContextStatusPriority
User says "update state", "save state", "project state"ACTIVE — update STATE.mdP1
User says "where was I", "where did I leave off"ACTIVE — read and present STATE.mdP1
User starts a session and STATE.md existsACTIVE — read silently, use as contextP2
User says "save diary" or "log session"DORMANT — Diary handles full session logs
User says "save project" or "handoff"DORMANT — Project skill handles lifecycle
User asks to recall past sessionsDORMANT — Echo handles historical recall

Protocol

Reading State (session start or "where was I")

  1. Check for STATE.md in the current project's
    .claude/
    directory:
    {project_dir}/.claude/STATE.md
    
  2. If found, read it and present a brief summary:
    • What was being worked on
    • Any blockers
    • The immediate next step
  3. If not found, say: "No STATE.md exists yet. I can create one after we start working."

Writing/Updating State

  1. Gather current state:

    • What task/phase is actively being worked on right now
    • Decisions made during this session (with rationale)
    • Open blockers or unanswered questions
    • Explicit next steps (not vague — specific enough to resume cold)
    • Key files modified recently
  2. Check git status for uncommitted work:

    git status --short
    
  3. Write STATE.md to the project's

    .claude/
    directory:

    # Project State
    *Last updated: {YYYY-MM-DD HH:MM}*
    
    ## Currently Working On
    {Active task or phase — be specific}
    
    ## Decisions Made
    - {Decision}: {Rationale}
    
    ## Blockers
    - [ ] {Blocker description}
    
    ## Next Steps
    1. {Immediate next action — specific enough to start cold}
    2. {Following action}
    
    ## Recently Modified Files
    - {file path} — {what changed}
    
    ## Uncommitted Changes
    {List any unstaged/uncommitted work, or "None — clean working tree"}
    
  4. Confirm with a brief summary of what was saved.

Deconfliction

SkillWhat it tracksWhen
StateCurrent snapshot — where you are right nowDuring session, living document
DiaryHistorical log — what you did in a sessionEnd of session, append-only
ProjectProject lifecycle — handoff between sessionsSession boundaries
WorkTask list — what needs to be doneWhen planning/tracking todos

State is the present tense complement to Diary's past tense. State tells you where to resume; Diary tells you what happened.

Inputs

  • Current working context (project, files, git status)
  • User's description of current state (or auto-detected from session)

Outputs

  • {project_dir}/.claude/STATE.md
    — updated living document
  • Brief confirmation summary

Example Usage

User: "update state"

📍 State — Updating project state...

Saved: C:\Projects\AdminStack\.claude\STATE.md

Currently: Building CC Monitor notification system
Blockers: None
Next: Wire up WebSocket events to notification dropdown

This will auto-load next session for seamless pickup.

Level History

  • Lv.1 — Base: Living STATE.md creation and update protocol. Read via Work Step 0 or manual invocation. Deconfliction with Diary/Project/Work. (Origin: MemStack v3.1, Feb 2026)