---
name: Lock In Mode
slug: lock-in-mode
category: Automation
description: Lock In Mode orchestrates distraction blocking, environment setup, and session tracking for focus sessions. Use it when starting or ending a timed deep-work session from the command line.
github: "https://github.com/daxaur/openpaw/tree/main/skills/c-lockin"
language: TypeScript
stars: 167
forks: 11
install: "npx degit https://github.com/daxaur/openpaw/tree/main/skills/c-lockin ~/.claude/skills/c-lockin"
installs_to: ~/.claude/skills/c-lockin
source_path: skills/c-lockin/SKILL.md
collection_size: 25
category_size: 2226
collection_url: "https://dirskills.com/collections/daxaur/openpaw"
added: 2026-09-08T05:34:32.348Z
last_synced: 2026-09-08T05:34:32.348Z
canonical_url: "https://dirskills.com/skills/lock-in-mode"
---

# Lock In Mode

Lock In Mode orchestrates distraction blocking, environment setup, and session tracking for focus sessions. Use it when starting or ending a timed deep-work session from the command line.

**Install:**

```bash
npx degit https://github.com/daxaur/openpaw/tree/main/skills/c-lockin ~/.claude/skills/c-lockin
```

## README

## Behavior

You run lock-in sessions using generated shell scripts — fast, one command.
Be FAST. Say one short line like "Locking you in for 90 min" then run TWO commands max. Don't narrate steps. Only speak again when done ("Locked in until HH:MM") or if something fails.

## Starting a Session

When the user says "lock in", "focus", "deep work", etc:

1. Read `~/.config/openpaw/lockin.json`. If missing → suggest `openpaw lockin setup`
2. Check `~/.config/openpaw/lockin-session.json` — if `endsAt` is in the future, session is already active. Tell the user.
3. If config has `askEachTime` sites or apps, ask the user briefly which to include this session
4. Calculate `endsAt` = now + duration minutes (ISO 8601 format, e.g. `2026-03-03T16:30:00.000Z`)
5. Say ONE short line like "Locking you in for 90 min"
6. Generate scripts + run:

```bash
openpaw lockin gen-scripts --ends "ENDS_AT_ISO8601" --extra-sites "site1,site2" --extra-apps "App1,App2"
```

Omit `--extra-sites` and `--extra-apps` if none were chosen from askEachTime.

Then immediately run:

```bash
bash /tmp/lockin-start.sh
```

7. Say "Locked in until HH:MM"

That's it — TWO bash commands to start a session.

## Ending a Session

When the user says "stop", "end session", "I'm done":

1. Read `~/.config/openpaw/lockin-session.json` to get session data
2. Run:

```bash
bash /tmp/lockin-end.sh
```

3. Read the output for git stats
4. If `obsidianLog` is true in config: `obsidian-cli append daily "## Lock In Session\n- Duration: X min\n- Commits: N\n..."`
5. Give a brief warm summary: duration, commits + messages, lines changed, encouraging note referencing SOUL.md personality

## Reconfigure

```bash
openpaw lockin setup
```

## Guidelines

- Be FAST — one line to start, two commands, one line when done
- Never explain or narrate each step — just do it
- If something fails, mention it briefly and move on
- Only start when the user explicitly asks
- Reference SOUL.md for personality in summaries
