whereami
Where Am I
Answer one question: what is this session working on right now?
Use it when a session resumes, after a long gap, or before deciding the next action. It reports state. It never changes it.
Process
- Role: report an explicit
/roleoverride when one is active; otherwise reportnone. Lifecycle role assumptions apply only to their own invocation, so a previousticketor planning action does not persist a role forwhereami. Roles are never written to disk. Do not infer one from the current ticket or searchroles/. - Mode: read
context/execution-mode.mdif it exists and take the value from its marker line, asskills/ticket/SKILL.md§Execution mode defines it. Reporthuman-in-the-loopwhen the file is missing, andinvalidwhen the file exists without a valid marker. Do not infer a mode from anything else. - Read
context/current-ticket.mdif it exists. Take Ticket, Feature, and Next from it verbatim. The ticket key and the Feature number are the ones recorded there, from their filenames. If the file is missing or still holds template placeholders, reportnone. - Run
git status --short --branchonce. Report the branch/ref, andcleanor the count of changed paths. - Compare the Git section of
context/current-ticket.mdwith step 4. Report a drift line only if the recorded branch differs from the real one. - Context telemetry: report it only if this harness exposes it.
Otherwise
unavailable. Do not estimate.
Output
Exactly this shape, one line each:
Role: <role | none>Mode: <human-in-the-loop | orchestrator | invalid>Feature: <## — name | none>Ticket: <key and name | none>Git: <branch/ref> — <clean | N changed>Context: <telemetry | unavailable>Next: <single next action | none>Add at most one line after it, and only when step 5 found drift:
Drift: current-ticket.md records <branch>, working tree is on <branch>Then stop.
Rules
- Read only. No writes, no commits, no
gitcommand that mutates anything. - Read at most two files:
context/execution-mode.mdandcontext/current-ticket.md. - Do not open the ticket, the feature spec, history, roadmap, or source.
- Report
none,unavailable, orinvalidinstead of inferring a missing value. - Do not offer to fix drift, update state, or start the next action. The human decides what happens after the snapshot.
Example
/whereami after resuming mid-feature:
Role: developerMode: human-in-the-loopFeature: 12 — export saved searchesTicket: 12.2 — CSV writerGit: feature/12-export-saved-searches — 3 changedContext: unavailableNext: Verify the CSV writer against the acceptance criteriaAnti-example
Do not do this:
Role: developer (inferred from recent commits)Mode: orchestrator (the project has several branches)Feature: 12 — export saved searchesTicket: 12.3 — probably the download endpointGit: feature/12-export-saved-searches — 3 changedContext: ~60% usedNext: I can update current-ticket.md and start ticket 12.3 — want me to?It guesses the role from history, guesses the mode from the branch list, invents a ticket that was never written, estimates telemetry it cannot see, and turns a status report into a proposal to write state.