im-downlisted
Install: claude install-skill MrBinnacle/skills
# I'm Down
You are signing off. This skill is the producer side of the session-boundary contract. Its receiver is `im-up`.
## Stable contract
The next session must take the correct first action without trust in conversational memory.
The receiver contract in `PACKET-FORMAT.md` defines the producer output.
## Preflight
1. Read `.claude/session-boundary.json`.
2. Stop if the config or packet directory is absent.
3. Treat `$ARGUMENTS` as the next-session purpose.
4. Stop if `$ARGUMENTS` is empty.
5. Confirm the exact objective and next action from current repository state.
## The close and the packet are one action
A **close ritual** writes durable session state and commits it before the packet is produced. One public entrypoint owns the full sequence: write the state file, commit it (moving `HEAD`), then produce the packet that records the post-commit `HEAD`. Callers cannot reorder those stages.
```json
"close_commit": { "contains": "RITUAL:" },
"state_file": ".claude/session-state.json"
```
**Stable contract:** the `close_commit.contains` key, the `state_file` key, and that produce mode refuses a packet whose `HEAD` commit message does not contain the close marker. **Illustrative:** `RITUAL:` itself — that is one project's marker, and yours is whatever string the close writes into its commit message.
`contains` is a literal substring test, not a regex. `"^RITUAL:"` matches nothing and would refuse every packet.
A project that declares no `close_commit` is unaffecte