---
name: update-focus
description: "Use when you need to update current-focus.md with a structured session summary."
allowed-tools: Read, Edit, Bash(git log*), Bash(date*), Bash(ls*)
---

# Update Focus Skill

> Structured end-of-session update to `.context/current-focus.md` that preserves the document's full structure.

## Purpose

The stop hook nudges to update `current-focus.md` at session end, but ad-hoc edits risk flattening its rich structure. This skill handles session rotation, open loop management, and targeted questions — so the file stays useful as a working memory between sessions.

## When to Use

- At the end of a work session (triggered by stop hook or manually)
- When the user says "update my focus", "save where I left off", "update current focus"
- After `/session-log` if `current-focus.md` wasn't updated

## Canonical Document Structure

`current-focus.md` follows this structure — **always preserve it**:

```markdown
# Current Focus

> Update this file regularly...

## This Week's Focus (w/c YYYY-MM-DD)

### Primary Goal
[One sentence]

### Active Projects (Top 3)
1. **[Project]** - [Status/phase]
2. **[Project]** - [Status/phase]
3. **[Project]** - [Status/phase]

### Waiting On
- [ ] [Person] - [What] - [Since when]

### Upcoming Deadlines
| Deadline | What | Project |
|----------|------|---------|

## Recent Context

### Last Session Summary (YYYY-MM-DD — [Title])
- [Bullet points of what happened]

### Previous Session (YYYY-MM-DD — [Title])
- [Bullet points]

### Previous Session (YYYY-MM-DD — [Title])
- [Bullet points]

### Previous Session (YYYY-MM-DD — [Title])
- [Bullet points]

### Open Loops
Things I started but haven't finished:
- [ ] [Item]
- [x] [Completed item — remove on next update]

### Mental State
[Optional: How are you feeling about work?]

---

## Quick Reference

### Key Meetings This Week
- [Day]: [Meeting] with [Person] about [Topic]

### Papers in Active Revision
- [Paper title] - [Journal] - [Stage]

---
```

## Workflow

### Step 1: Read current state

Read these three sources to understand what happened:

1. `.context/current-focus.md` — current file contents
2. Latest file in `log/` — most recent session log (if one was created)
3. `git log --oneline -10` — recent commits for concrete evidence of work done

Also note today's date for week rollover detection.

### Step 2: Detect week rollover

Compare the `w/c` date in `## This Week's Focus (w/c YYYY-MM-DD)` against today's date.

- If today is in a **new week** (Monday-based), flag that weekly sections need updating.
- If same week, skip weekly section updates.

Week rollover means: Primary Goal, Active Projects Top 3, Waiting On, Upcoming Deadlines, and Key Meetings may all need refreshing.

### Step 3: Draft session summary

From the session context (conversation history, commits, log), draft a summary in the **same bullet-point format** as existing entries:

```markdown
### Last Session Summary (YYYY-MM-DD — [Short Title])
- [What was done, in bullet points]
- [Key decisions or outputs]
- [Files/commits if relevant]
```

Keep it concise — 3-6 bullet points. Match the style of existing entries.

### Step 4: Ask targeted questions (2-4 max)

Ask only what's needed. Skip questions where the answer is obvious from context.

**Always ask:**
1. "Does this session summary look right?" (show the draft)
2. "Any open loops to add or check off?" (show current list with proposed changes marked)

**Ask only if relevant:**
3. "How are you feeling about work?" — only if Mental State is still a placeholder (`[Optional: ...]`)
4. "Has your primary goal or top 3 changed?" — only on **week rollover**

Present questions concisely with proposed answers. Let the user confirm or adjust.

### Step 5: Apply the update

Use `Edit` to make targeted changes. **Never rewrite the whole file.**

#### Session rotation rules

- **Rename** the current `### Last Session Summary (...)` to `### Previous Session (...)`
- **Insert** the new `### Last Session Summary (...)` in its place
- **Keep a maximum of 4 session entries** in Recent Context (1 Last + 3 Previous)
- If there are already 4 entries, **delete the oldest** Previous Session
- Preserve the exact header format: `### Last Session Summary (YYYY-MM-DD — Title)` for the newest, `### Previous Session (YYYY-MM-DD — Title)` for older ones

#### Open loop management

- **Check off** items that were completed this session (change `- [ ]` to `- [x]`)
- **Remove** items marked `[x]` from previous sessions (they've been acknowledged)
- **Add** new open loops identified during the session
- Keep the intro line: `Things I started but haven't finished:`

#### Other updates

- Update **Mental State** if the user provided one
- Update **weekly sections** if week rollover was detected and the user confirmed changes
- Update **Quick Reference** if meetings or paper revisions changed
- Update **Waiting On** if new blockers emerged or old ones resolved

### Step 6: Confirm

Report what was changed:

```
Updated .context/current-focus.md:
- Session: [title] added to Recent Context
- Open loops: [N checked off, M added]
- [Any other changes]
```

If no session log was created this session, offer: "Want me to run `/session-log` too?"

## Integration with Other Skills

| Skill | Relationship |
|-------|-------------|
| `/session-log` | Creates the detailed log; `/update-focus` updates the working memory. Often run together. |
| `/save-context` | For ad-hoc saves to any context file. Defers to `/update-focus` for structured focus updates. |
| `vault sync (edit vault files directly)` | Updates `projects/_index.md` and vault. For full session-level focus updates, defers to `/update-focus`. |

## Example Interaction

**Claude:** Here's what I'd update in `current-focus.md`:

**Session summary:**
```
### Last Session Summary (2026-02-08 — Update Focus Skill)
- Created `/update-focus` skill for structured current-focus.md updates
- Updated stop hook, session-log, and update-context with cross-references
- Updated CLAUDE.md skills list (16 → 17)
```

**Open loops — proposed changes:**
- [x] ~~Commit all pending changes~~ (done this session)
- [ ] Test new skills on CAPE-MOBO or MRes paper *(keep)*
- [ ] Try replication protocol on a real paper *(keep)*
- **New:** [ ] Test `/update-focus` skill end-to-end

Does this look right? Any open loops to add or change?

**the user:** Looks good, also check off the replication one, I decided to skip it.

**Claude:** Got it. *[Applies edits]* Updated `.context/current-focus.md`:
- Session: "Update Focus Skill" added to Recent Context
- Open loops: 2 checked off, 1 added
- Previous sessions rotated (oldest dropped)

Want me to run `/session-log` too?
