focus · git:20260713.966aafa · 2026-07-13 · sha256 ad50e797d8ec42cc

focus git:20260713.966aafaA

Immutable. This exact content is served forever at /api/v1/blob/ad50e797d8ec42cc.

---
name: focus
description: Orient on a project or project family. Shows recent activity, milestones, and commits from event logs.
allowed-tools:
  - Bash
  - Read
---

# Focus

Get oriented on a project before diving in. Pulls recent activity from the event logs — no git calls, no compilation, just what the hooks already captured.

Before running commands, resolve `ROOT` to the Session Cartographer plugin
root. Prefer `CARTOGRAPHER_ROOT`, then `CLAUDE_PLUGIN_ROOT` or `PLUGIN_ROOT`.
Otherwise derive it from this skill's reported base directory (`../..` from
`skills/focus`), with the conventional checkout as a legacy fallback.

## What it shows

- Recent session milestones (with git branch, dirty state from when they were logged)
- Recent commits (with type classification)
- Research activity
- Last session end events (what was happening when you left off)
- **Related project threads + recurring technical maneuvers** (from the co-occurrence graph, `scripts/cooccurrence-graph.js`)

## How to use it

Run the search script with `--project` and a broad recency query:

```bash
bash "$ROOT/scripts/cartographer-search.sh" "recent activity" --project <PROJECT> --limit 20
```

The `<PROJECT>` argument supports:
- **Direct project names**: `session-cartographer`, `scrutinizer2025`
- **Registry aliases**: `devtools`, `scrutinizer`, `psychodeli` — expanded via `project-registry.json` to match all repos in the family

## Step 1: Resolve the project

If the user gives a vague name, check `project-registry.json` for aliases:

```bash
jq -r '.aliases | keys[]' "$ROOT/project-registry.json"
```

## Step 2: Search recent activity

```bash
bash "$ROOT/scripts/cartographer-search.sh" "recent activity" --project <PROJECT> --limit 20
```

## Step 3: Surface related threads + maneuvers

The co-occurrence graph adds two orientation lenses the search can't: which *other* projects this one is worked on alongside (cross-project research threads), and which recurring technical maneuvers (release, deploy, merge, overleaf-sync…) it runs. Both resolve aliases/partial names automatically.

```bash
node "$ROOT/scripts/cooccurrence-graph.js" --related <PROJECT>
node "$ROOT/scripts/cooccurrence-graph.js" --maneuvers <PROJECT>
```

Skip either line silently if it prints `(no co-active…)` / `(no maneuvers…)`. The maneuver map is an *index*, not a command store — to recover the actual command for a maneuver, grep the changelog on demand:

```bash
jq -r 'select(.project=="<PROJECT>" and (.summary|test("wrangler|gh release|netlify"))) | .summary' ~/Documents/dev/changelog.jsonl
```

## Step 4: Summarize

Present a concise orientation:
- What branch/state was last recorded
- What was being worked on (from milestones + commits)
- Any recent research
- **Related threads** — projects co-active with this one, if any (a nudge toward cross-project context)
- **Maneuvers** — recurring technical procedures this project runs, if any
- Where the transcript is if they want full context

## Examples

```
/focus scrutinizer
/focus devtools
/focus psychodeli
```