state

$npx mdskill add cwinvestments/memstack/state

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

SKILL.md

.github/skills/stateView on GitHub ↗
---
name: state
description: "Use when the user says 'update state', 'project state', 'where was I', or at session start to load current context."
version: 1.0.0
---


# 📍 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

| Context | Status | Priority |
|---------|--------|----------|
| **User says "update state", "save state", "project state"** | ACTIVE — update STATE.md | P1 |
| **User says "where was I", "where did I leave off"** | ACTIVE — read and present STATE.md | P1 |
| **User starts a session and STATE.md exists** | ACTIVE — read silently, use as context | P2 |
| **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 sessions** | DORMANT — 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:
   ```bash
   git status --short
   ```

3. **Write STATE.md** to the project's `.claude/` directory:
   ```markdown
   # 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

| Skill | What it tracks | When |
|-------|---------------|------|
| **State** | Current snapshot — where you are *right now* | During session, living document |
| **Diary** | Historical log — what you *did* in a session | End of session, append-only |
| **Project** | Project lifecycle — handoff between sessions | Session boundaries |
| **Work** | Task list — what *needs to be done* | When 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)

More from cwinvestments/memstack

SkillDescription
compressUse when the user says 'headroom', 'compression', 'token savings', 'proxy status', or asks about context window usage.
diaryUse when the user says 'save diary', 'log session', 'wrapping up', or at end of a productive session.
echoUse when the user references past sessions, asks 'what did we do', 'do you remember', 'last session', 'recall', or 'continue from'.
familiarUse when the user says 'dispatch', 'send familiar', 'split task', or needs work split across parallel CC sessions.
forgeUse when the user says 'forge this', 'new skill', 'create enchantment', or wants to create a MemStack skill.
governorUse when the user says 'new project', 'project init', 'what tier', 'scope', or discusses project maturity, complexity budget, or what's appropriate to build.
grimoireUse when the user says 'update context', 'update claude', 'save library', or after significant project changes.
memstack-automation-api-integrationUse this skill when the user says 'API integration', 'connect APIs', 'sync data', 'data mapping', 'rate limiting', or needs system-to-system connectors with authentication, rate limit handling, and error recovery. Generates API integration code with authentication (OAuth, API key, JWT), request/response mapping, rate limit handling, error recovery with circuit breakers, and sync monitoring. Do NOT use for visual n8n workflows or webhook receiving.
memstack-automation-content-pipelineUse this skill when the user says 'content pipeline', 'content automation', 'auto-publish', 'repurpose content', 'multi-platform publishing', or needs end-to-end content workflow from ideation through cross-platform formatting and publishing. Do NOT use for single social media posts or individual blog posts.
memstack-automation-cron-schedulerUse this skill when the user says 'cron job', 'scheduled task', 'run every', 'cron expression', 'recurring job', or needs production-grade scheduled jobs with overlap prevention, monitoring, and structured logging. Do NOT use for n8n workflows or event-driven webhooks.