| name | orient |
| description | Start-of-session orientation that reads context files and recent git activity, then presents a structured summary. Use when beginning a session, after /clear, or when picking up a project cold. |
| allowed-tools | Read, Bash(git:*) |
Orient
Orient before acting. Read the project's context files and recent git activity, synthesize a structured summary, and present it. Do not start any work.
Recent git activity
Recent commits:
!git log --oneline -5 2>/dev/null || echo "(no commits found)"
Commits since state.md was last committed (the last preserved session boundary):
!anchor=$(git log -1 --format=%H -- state.md 2>/dev/null); if [ -z "$anchor" ]; then echo "(state.md has never been committed — staleness unknown)"; else git log --oneline "$anchor..HEAD" 2>/dev/null | grep . || echo "(none — state.md is current with git history)"; fi
Working tree status:
!git status --short 2>/dev/null | grep . || echo "(clean, or not a git repo)"
Rules
-
This is read-only — do not start working. The entire purpose of this skill is to orient. Read files, synthesize, present, and stop. Do not create, edit, or fix anything. Do not run tests. Do not write code. Wait for the user to direct next steps.
-
Require the tracked scaffold files. If state.md or decisions.md doesn't exist in the project root, stop and tell the user to run /scaffold first. Do not partially orient. A missing scratch.md is fine — it's gitignored, so it won't exist after a fresh clone. Treat it as empty and continue.
-
Read everything before speaking. Read state.md, decisions.md, scratch.md, and CLAUDE.md (if it exists) in full before producing any output. Combine them with the injected git context above to build the complete picture.
-
Lead with what to do next. The "Next session should start with" section of state.md is the most important signal. Put it first in the summary. The user wants to know the next action, not a recap.
-
Be concrete, not narrative. Use file paths, function names, error messages, and specific next steps. No "let's pick up where we left off" or "good progress was made." If state.md contains vague content, surface it as-is — don't embellish.
-
Flag staleness. The injected "commits since state.md was last committed" output is the staleness signal. If it lists commits, state.md predates them — say so explicitly and list those commits; the context files may be outdated. If it says state.md has never been committed, note that staleness can't be determined from git.
-
Flag emptiness. If state.md sections are all "None" (the scaffold default), say so plainly: the context files exist but haven't been filled in yet. There's nothing to orient from — ask the user what they'd like to work on.
-
Surface scratch.md only if non-empty. Preserve wipes scratch.md clean. If it contains content, that's unusual — include it in the summary under a separate note. Otherwise omit it.
Output format
Present the orientation as a single structured block:
## Session Orientation
### Next step
[Contents of "Next session should start with" from state.md — or "No next step recorded" if empty/None]
### Where we left off
[Contents of "Where we ended" from state.md]
### What's working
[Contents of "What's working" from state.md]
### What's broken / in-progress
[Contents of "What's broken / in-progress" from state.md — omit if None]
### Landmines
[Contents of "Landmines" from state.md — omit if None]
### Git since last session
[Summary of injected git context — commits since state.md was last committed, uncommitted changes. Omit if clean and nothing notable.]
After the block, print one line:
Ready when you are. What should we work on?
Do not say anything else after that line.
Execution order
- Check that
state.md and decisions.md exist in the project root — if either is missing, tell the user to run /scaffold and stop
- Read
state.md in full
- Read
decisions.md in full
- Read
scratch.md in full (skip without error if it doesn't exist — it's gitignored)
- Read
CLAUDE.md if it exists (skip without error if it doesn't)
- Combine file contents with the injected git context above
- Check for staleness: use the injected "commits since state.md was last committed" output
- Produce the orientation block in the output format above
- Stop. Wait for user direction.