Skip to content
Automation
Skill

/plan

Open the plan room: explore the code and design the work with the owner, building nothing until the owner leaves.

BOOST
From plugin
nightshift
7615 skills
Install
$ npx -y skills add orwa-mahmoud/nightshift --skill plan --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/plan

Context preview

The summary Claude sees to decide when to auto-load this skill.

Open the plan room: explore the code and design the work with the owner, building nothing until the owner leaves.

SKILL.md

plan.SKILL.md
name: plan
description: Open the plan room: explore the code and design the work with the owner, building nothing until the owner leaves.
license: MIT

Plan with the owner in the plan room. Here the conversation explores, weighs options and draws the plan; nothing gets implemented until the owner leaves the room on purpose. The room is enforced by the hooks, not by this text: while it binds this conversation, every edit, write and mutating command outside the staging folder is denied, however the request is worded.

Resolve the installed plugin root to an absolute `$NIGHTSHIFT_PLUGIN_ROOT` — `${CLAUDE_PLUGIN_ROOT}` on Claude Code, `$PLUGIN_ROOT` on Codex when set, otherwise the absolute path this skill was attached from (`skills/plan/SKILL.md`). Run every command below through `"$NIGHTSHIFT_PLUGIN_ROOT/runtime/ns"` — native Windows: `& "$NIGHTSHIFT_PLUGIN_ROOT\runtime\windows\ns.ps1"` in the PowerShell tool, same verbs — which resolves the host and the workspace; `ns help` lists the verbs, and `ns bind` prints the six resolved facts (`TASK_ROOT`, `NIGHTSHIFT_WORKSPACE`, `NS`, `NIGHTSHIFT_PLUGIN_ROOT`, `HOST`, `SOURCE`); `$NS` below is that `NS`. Never a bare relative path: the working directory persists between calls. Each `$NS/...` path below is where the current layout keeps that file; `ns path <key>` prints where this workspace keeps it, and `ns path --list` names every key.

1. Enter the room

Pass the host you are running on (`claude`, `codex` or `cursor`):

"$NIGHTSHIFT_PLUGIN_ROOT/runtime/ns" plan-enter --host claude

Native Windows: `& "$NIGHTSHIFT_PLUGIN_ROOT\runtime\windows\ns.ps1" plan-enter --host claude`.

The room opens unbound. **The very next tool call is the probe that binds it to this conversation** — nothing in between, not even a read:

: nightshift-plan-probe
$null = 'nightshift-plan-probe'
  • The probe runs cleanly: the room is bound to this conversation. Tell the owner in one line that the

plan room is open, that nothing is implemented here, and how they leave it (section 6).

  • The probe is denied because the room is bound to another conversation: tell the owner, and stop.

They plan in that conversation, or leave the room first.

  • The probe is denied because this conversation is working the shift: no room was opened. Tell the

owner; they plan in another conversation, or stop the shift first.

  • `plan-enter` reports no `.nightshift/`: the project has no Nightshift workspace. Tell the owner to run

Setup, and stop.

An open room bound to this conversation (after compaction, say) needs no new entry: run `plan-enter` and the probe again, and both pass.

**Resume before anything else.** `plan-enter` also prints `plan record <path>` and one `open plan: <entry>` line for each plan the record still holds open (`open plan: none` when there is none). With an open plan, read the record first and pick up exactly where its `Where we are` line left off: say in a sentence or two what was decided and what comes next, so the owner never repeats themselves. With more than one open plan, ask which one this conversation continues.

2. Review what the last shift left

`plan-enter` ends with `review` lines: what waits for the owner's word. `review none` means there is nothing, and the room is plain planning. Otherwise, before new planning, offer to walk the owner through them, one at a time, in this order:

  • `review morning` and `review receipts` — the morning page (under `ns path receipts`) and the

receipts index (`ns path receipts-index`). Read them first and give the owner the outcome in a few lines: what shipped, what did not, what needs a decision.

  • `review parked` — each open decision in the parking lot (`ns path parking-lot`). Show the default

the shift chose and why, and ask whether it stands. Record the answer by appending ` · answered: <the owner's decision>` to that entry.

  • `review snag` — each snag with no disposition in the snag log (`ns path snag-log`). Ask what to do:

the owner's decision becomes its disposition (` · rejected-because: <why>` or ` · accepted-tradeoff: <why>`), and a snag to fix becomes an item drafted for the next shift (section 5), its disposition written once the fix lands.

  • `review open` and `review stopped` — the items still open, and those closed at their hard budget,

in the punch list (`ns path punch-list`). Ask for each: keep it for the next shift as it is, rework it (draft the new version, section 5), or drop it. The punch list is the owner's to edit: a box to reopen, reword or remove is theirs to change, and the room cannot write it.

Nothing is written without the owner's answer to that entry. The parking lot, the snag log, the drafting table and the plan record are the only files the room writes; an archived shift reads the same way, from what Archive left live.

3. Think with the owner

This is a conversation, not a procedure. Follow the owner's direction and pace; do not impose phases, templates or a checklist while discussing.

  • **Read before you ask or propose.** Open the files, tests and history the question touches

(`git log`, `git show`, `git blame` and every read-only tool are free here). Name paths and lines. A question the code already answers is not one to ask the owner.

  • **Lay out real options.** For a decision that matters, give two or three options with what each

costs and buys, then say which one you would pick and why. A survey with no recommendation hands the work back.

  • **Draw it.** An ASCII diagram of a flow, a state machine or a component boundary often settles what

a paragraph cannot. Use one when it helps, not by default.

  • **Ask freely.** Questions are the point of this room. Ask one at a time when the answer changes what

comes next.

  • **Keep what was decided visible.** When the discussion moves on, restate the decision in one line

so it is not reopened by accident.

When the owner says "just do it" or "implement it":

Read more
Ships withnightshift

Give the agent a shift. Come back to work you can review. Nightshift gives Claude Code, OpenAI Codex, and Cursor a durable work contract for long coding runs. Bring a task list, choose a ready-made shift, or give your agent an objective and hours to work.

Get the whole plugin
Stats
76
Stars
4
Forks
Active
Maintenance
Shell
Language
MIT
License
2d ago
Last commit
2mo ago
Created

Repo: orwa-mahmoud/claude-nightshift

Other skills on nightshift.