c-lockin — Claude Code skill: focus sessions and distraction blocking
This skill turns a request to lock in into a timed focus session that blocks sites and apps, then reports your git activity.
npx skills add daxaur/openpaw --skill c-lockin -a claude-codeWhat c-lockin does
c-lockin handles the whole lock-in routine. The agent reads ~/.config/openpaw/lockin.json, checks ~/.config/openpaw/lockin-session.json for a session still running, and generates two shell scripts: one starts the block, the other lifts it. Two commands do the work — openpaw lockin gen-scripts followed by bash /tmp/lockin-start.sh.
The end time is computed from the duration you give, written as ISO 8601 into the session file. With askEachTime enabled, the agent asks which sites and apps to add for this round. When you stop, bash /tmp/lockin-end.sh pulls git stats, and if obsidianLog is true the summary goes to your daily note through obsidian-cli.
No ~/.config/openpaw/lockin.json means no session — the skill points you to openpaw lockin setup first. Output stays terse on purpose: one line at the start, one at the end. Failures get a short mention and nothing more.
What it helps with
- block distracting sites and apps for a work session
- start a deep work session with a single phrase
- count commits and changed lines during the session
- log the session summary into an Obsidian daily note
- change which sites and apps get blocked via
openpaw lockin setup
Example prompts for the agent
- Lock me in for 90 minutes and block distractions
- End the session and show my commit stats
- Reconfigure my blocks with
openpaw lockin setup
How to install c-lockin
1Skills CLI (Vercel)
npx skills add daxaur/openpaw --skill c-lockin -a claude-code2Manually: put the files in place
~/.claude/skills/c-lockin/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/c-lockin/
1Skills CLI (Vercel)
npx skills add daxaur/openpaw --skill c-lockin -a codex2Manually: put the files in place
.agents/skills/c-lockin/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add daxaur/openpaw --skill c-lockin -a cursor2Manually: put the files in place
.cursor/skills/c-lockin/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install daxaur/openpaw c-lockin2Manually: put the files in place
.github/skills/c-lockin/SKILL.md1Skills CLI (Vercel)
npx skills add daxaur/openpaw --skill c-lockin -a gemini-cli2Platform CLI
gemini skills install https://github.com/daxaur/openpaw --path skills/c-lockinManually: put the files in place
.devin/skills/c-lockin/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add daxaur/openpaw --skill c-lockin -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about c-lockin
How do I install c-lockin in Claude Code?
Run npx skills add daxaur/openpaw --skill c-lockin -a claude-code. The skill lands at ~/.claude/skills/c-lockin/SKILL.md.
What does c-lockin do?
It runs a focus session: generates blocking scripts for sites and apps, sets the end time, and collects git stats when the session ends.
What does c-lockin need to work?
A ~/.config/openpaw/lockin.json file. Without it the skill suggests running openpaw lockin setup. Writing summaries to Obsidian needs obsidian-cli and obsidianLog turned on.
Source text
SKILL.md · MIT
---
name: c-lockin
description: Lock In Mode — orchestrate distraction blocking, environment setup, and session tracking.
tags: [lockin, focus, productivity, deep-work, pomodoro, distraction-blocking]
---
## 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
© daxaur · MIT · daxaur/openpaw