Claude
Skills
Sign in
Back

night-park

Included with Lifetime
$97 forever

Parks the current Claude Code session before going to sleep. Analyzes the conversation, writes a handoff document to docs/handoffs/ in the current project, mirrors the same summary to engram tagged with the session ID, and prints the exact `claude --resume <id>` command for tomorrow. Zero interaction — runs end-to-end on a single invocation. Trigger: /night-park, night park, park session, me voy a dormir, guardar sesion.

AI Agents

What this skill does


# night-park

> One-shot "park this session" command for end-of-day handoff across multiple
> parallel Claude Code sessions. Reads the current `CLAUDE_CODE_SESSION_ID`,
> drafts a substantive summary from the conversation, persists it to disk and
> to engram, and emits the resume command.

**Triggers**: `/night-park`, night park, park session, me voy a dormir, guardar sesion, parking nocturno, handoff session

---

## Purpose

Working very late across 3+ Claude Code sessions in parallel makes it
impossible to remember tomorrow which session was attacking which problem.
This skill drops a tagged breadcrumb per session: a real summary you can read
in 30 seconds and resume the EXACT session by ID with one command.

The handoff lives in two places:
- **`docs/handoffs/session-<id>-<slug>.md`** — readable by you, by your IDE,
  and by any future Claude session opened in that project. Local to the
  project; not meant to be committed (gitignored).
- **Engram** with `topic_key: handoff/<slug>` and the `session_id` embedded —
  searchable from any future session in any project via `mem_search handoff`.

---

## Process

The skill runs end-to-end with NO user interaction. No drafts to confirm, no
slug to pass, no questions. The user invoked this because they want to stop
thinking — respect that.

### Step 1 — Read the session ID

Read the environment variable `CLAUDE_CODE_SESSION_ID`. Use the full UUID
(do NOT truncate). If the variable is empty, abort with a one-line message:
`night-park: CLAUDE_CODE_SESSION_ID not available in this environment — cannot park.`

```bash
echo "$CLAUDE_CODE_SESSION_ID"
```

### Step 2 — Derive a slug from the conversation

Analyze the conversation history and produce a 3-5 word kebab-case slug that
captures the PROBLEM being worked on (not a generic verb). Examples of good
slugs:

- `pro-plus-duplicate-customer`
- `n-plus-one-user-list`
- `auth-middleware-token-leak`
- `night-park-skill-creation`

Bad slugs (do NOT use):
- `session-work`, `debug-stuff`, `today`, `wip`, `task` — useless tomorrow.

The slug MUST be ≤ 60 chars, lowercase, alphanumerics + hyphens only.

### Step 3 — Draft the summary from the conversation

Read the conversation context and fill these sections substantively. These
are NOT placeholders — they are the entire point of the document.

| Section | What goes here | Length |
|---------|----------------|--------|
| `## Qué estábamos haciendo` | The OBJECTIVE of the session — what problem we were attacking, why it mattered, the user's original ask. | 2-4 lines |
| `## Dónde quedamos` | Concrete current state — what was done, what decisions were made, what is half-finished, what is blocked. | 2-4 lines |
| `## Próximo paso` | 1-3 bulleted, actionable items — the FIRST thing to do tomorrow when reopening. Each bullet must be doable, not abstract. | 1-3 bullets |
| `## Archivos tocados / relevantes` | Files modified or central to the discussion, with a one-line reason each. | bullet list |
| `## Contexto técnico clave` | Only if there is a non-obvious gotcha, a key decision, a command to remember, or an external link. **Omit the entire section if there is nothing substantive.** | optional |

Write in the same language the user has been using in the session
(Colombian-style Spanish or English). Default to the dominant language of the
session.

### Step 4 — Pick a title

The first line of the document is `# <Title>`. The title is one human-readable
sentence that names the problem — NOT the slug. Examples:

- `# Pro Plus: duplicate customer on signup flow`
- `# N+1 query in /api/users list endpoint`
- `# Creating night-park skill for end-of-day session parking`

### Step 5 — Write `docs/handoffs/session-<id>-<slug>.md`

Path is relative to the CURRENT working directory (the project root). Create
`docs/handoffs/` if missing. Use this exact structure:

```markdown
# <Title>

**Session ID**: <full-uuid>
**Resume con**: `claude --resume <full-uuid>`
**Fecha**: <YYYY-MM-DD HH:MM>
**Proyecto**: <basename of CWD>

## Qué estábamos haciendo
<2-4 lines>

## Dónde quedamos
<2-4 lines>

## Próximo paso
- <actionable item 1>
- <actionable item 2>

## Archivos tocados / relevantes
- `path/to/file.ts` — <why it matters>

## Contexto técnico clave
<omit this section entirely if nothing substantive>
```

Use the current local date/time for the `Fecha` field. Use the basename of
CWD for `Proyecto`.

### Step 6 — Update `.gitignore`

Check the project's `.gitignore` (in CWD). If `docs/handoffs/` is NOT already
ignored, append it:

```
# Local session handoffs from /night-park — not tracked
docs/handoffs/
```

If there is no `.gitignore` at all, create one with just that block. Do NOT
add anything else. Do NOT touch a `.gitignore` outside CWD.

### Step 7 — Save to engram

Call `mem_save` with:

- `title`: same as the document title
- `type`: `discovery`
- `scope`: `personal`
- `project`: basename of CWD
- `topic_key`: `handoff/<slug>`
- `session_id`: the full UUID from Step 1
- `content`: a structured block following the global engram format:

```
**What**: <one-line summary of what the session was doing>
**Why**: <user's motivation / original ask>
**Where**: <files affected, comma-separated>
**Learned**: <gotchas or key decisions, if any — else omit this field>

**Session ID**: <full-uuid>
**Resume**: `claude --resume <full-uuid>`
**Handoff doc**: docs/handoffs/session-<id>-<slug>.md
**Next step**: <first item from the Próximo paso list>
```

### Step 8 — Print the resume command

After all writes succeed, print exactly ONE line to the user — no extra
commentary, no follow-up question:

```
🛏️  Parked. Tomorrow: claude --resume <full-uuid>
```

(The bed emoji is the ONLY emoji allowed in this skill's output. It is a
deliberate signal that the session is closed.)

If any step in 5-7 failed, print the error AND still print the resume line if
the session ID is known — the user must be able to reopen tomorrow even if
the handoff doc didn't write.

---

## Rules

1. **Zero interaction.** Never ask the user anything. Never show a draft for
   confirmation. The user invoked this because they want to stop thinking.
2. **Read `CLAUDE_CODE_SESSION_ID` directly.** Do not ask the user for it.
   Do not truncate it. Use the full UUID everywhere it appears.
3. **Substantive sections, not placeholders.** `## Qué estábamos haciendo`,
   `## Dónde quedamos`, and `## Próximo paso` must be filled from the actual
   conversation. If you cannot fill them, you did not read the conversation
   — re-read before writing.
4. **Slug must name the PROBLEM**, not the activity. `debug-stuff` and `wip`
   are banned.
5. **`docs/handoffs/` belongs in `.gitignore`.** These are personal
   late-night notes, not project documentation. Append to `.gitignore` if
   missing. Do not touch `.gitignore` outside CWD.
6. **Engram save mirrors the document.** Same title, same problem, with the
   session_id embedded so future `mem_search handoff` returns this entry.
7. **Match the session's language.** If the conversation was in Spanish,
   write the handoff in Spanish. If English, English. Section headers stay
   in Spanish as defined above — they are the skill's contract.
8. **Output is ONE line at the end.** The resume command. Nothing else. The
   user is going to sleep.
9. **No commit, no push, no git operations beyond `.gitignore`.** Per the
   global rule "never commit without explicit user request for THAT
   action".
10. **No engram session_summary call.** This skill is a parking breadcrumb,
    not a session close. The user may keep working tomorrow in the same
    session via `--resume`. Calling `mem_session_summary` would create a
    false "session ended" record.
Files: 1
Size: 8.1 KB
Complexity: 20/100
Category: AI Agents

Related in AI Agents