Skip to content
Back to skills

Rota Pause

ASecurity

Use when the session is approaching a context limit, the work must be handed off, a long /rota-work cycle should stop cleanly, or an orchestrator must stop mid-round.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
developmentgoswiftgit

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add l4ci/rota --skill rota-pause --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rota Pause?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rota Pause
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/l4ci-rota-pause/badge)](https://www.skillsdirectory.com/skills/l4ci-rota-pause)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: rota-pause
description: Use when the session is approaching a context limit, the work must be handed off, a long /rota-work cycle should stop cleanly, or an orchestrator must stop mid-round.
---

# rota-pause — Graceful Session Pause

`/rota-work` with no argument reads the handoff note next session; it goes away when the stream is resumed or abandoned (`rota status rm` deletes it).

## When NOT to Use

- Work complete → `/rota-ship`
- You can finish in this session
- No active branch, no `/rota-work` running and no round
- Round finished → `rota round wind-down`

Copy this checklist and track your progress:
```
- [ ] Step 1 — Is a Round Running?
- [ ] Step 2 — Resolve the Pause Set
- [ ] Step 3 — Handle Uncommitted Work
- [ ] Step 4 — Write the Handoff Note
- [ ] Step 5 — Pin Status
- [ ] Step 6 — Confirm
```

## Step 1 — Is a Round Running?

Run `rota round status --json`. A round is in flight when a row in `data.slots` holds an issue or `data.review` is non-empty; slots parked on `park/<agent>` with nothing queued are not a round. If in flight, read [`orchestrator-pause.md`](orchestrator-pause.md) and follow it; Steps 2-5 do not apply (the orchestrator sits on the base branch). Otherwise continue with Step 2.

## Step 2 — Resolve the Pause Set

The pause set is the `(branch, repo)` entries to pause: one for a single-repo cycle or scoped umbrella pause, several when a `/rota-work` wave fanned out across sub-repos.

1. `rota status show`: take the active streams whose `branch` matches the current branch. One match is the pause set (`repo` may be null).
2. Several matches (a `/rota-work` wave across sub-repos): read [`umbrella-wave.md`](umbrella-wave.md), *Step 2*.
3. No match: use `git rev-parse --abbrev-ref HEAD` and pause `[(branch, null)]`, for `/rota-pause` before `/rota-work` registered status.
4. `rota git guard feature-branch <branch>` exiting 1 means the base branch: tell the user there is no feature work to pause and stop.

## Step 3 — Handle Uncommitted Work

Check each entry's tree with `git -C <path> status --porcelain` (path from `rota repo resolve <repo> --json`, `data.repos[0].path`; cwd when `repo` is null).

All clean: record `clean tree`. Any dirty: ask once via `AskUserQuestion`:

- **Header:** `"Uncommitted"`
- **Question:** *"N uncommitted files on `<branch>`. How should I handle them?"* For a wave, name the dirty repos instead of N.
- **Options** (single-select):
  1. "WIP commit (Recommended)" — *"Stage the dirty paths by name (`git add -- <paths from git status --porcelain>`), then `git commit -m 'wip: pause before context cutoff'`. Keeps changes on the branch."*
  2. "Stash" — *"`git stash push -u -m 'rota-pause <branch>'`. Keeps changes out of history."*
  3. "Leave in place" — *"No action; the handoff note will record that the tree is dirty."*

Apply the choice only to dirty entries, with `git -C <path>`. Record each entry's artifact (commit hash, stash ref, `dirty tree`, `clean tree`).

## Step 4 — Write the Handoff Note

Find the milestone first: `rota backlog milestones <ID>...` for the captured items. If none is listed, `rota milestone active`; include it only if exactly one is active. With several, use the one matching the paused items.

Write one handoff note per `(branch, repo)` entry. Get the path from `rota status handoff "$BRANCH" --canonical ${REPO:+--repo "$REPO"}`. Fill the template in `references/handoff-template.md` from the session: omit sections that do not apply, do not invent content. Always overwrite.

In a wave, read *Step 4* in [`umbrella-wave.md`](umbrella-wave.md).

Fill *Stage* and *Next planned step* from the task ledger ([`references/task-ledger.md`](references/task-ledger.md)): `rota git base`, then the `Task:` trailers in `git log <base>..HEAD`. Name the finished tasks and make the first unfinished one the next step.

Gotchas and dead ends go to `/rota-learn` (Step 6), not the note.

## Step 5 — Pin Status

For each entry run `rota status add <branch> --items <ids> [--worktree <path>] [--repo <repo>] --if-absent` so resume finds it. `--if-absent` keeps the original `startedAt`; the note carries the pause time.

## Step 6 — Confirm

One compact block. Wave: name every repo, count handoffs, list Uncommitted per repo.

```
Paused `rota/fix-B07-timer-badge` (web) — handoff note saved.

Stage: mid-hypothesis verification for [B07]
Next: run the verification probe in MenuBarManager.swift:54
Uncommitted: wip commit a1b2c3d

Resume with `/rota-work` in a fresh session.
```

Show the `(web)` suffix only when `repo` is non-null.

**Learn nudge (conditional).** If the session hit a durable gotcha (a hypothesis that contradicted assumptions, a non-obvious root cause, a tool quirk), add one line: *"Run `/rota-learn` now to preserve session insights durably — handoff captures intent, not learnings."* Skip if nothing non-obvious surfaced or `/rota-learn` already ran.

## Rules

- **Write what you know.** The note is a state snapshot, not a task spec.
- **One handoff note per `(branch, repo)`.** Overwrite on re-pause.
- **A multi-repo wave is one logical pause.** `cd` into a sub-repo to scope to it.
- **Never commit `.rota/handoff/`** (gitignored per-developer scratch).
- **Do not delete the handoff note here.** Resume or abandon removes it; the next session's hook consumes the orchestrator note.
- **A paused round is not a finished round.** Never wind down, merge or reclaim from a pause.
- **No mutation beyond the handoff note, status pin and the chosen wip commit or stash.**

## References

- [`orchestrator-pause.md`](orchestrator-pause.md): pausing an orchestrator mid-round; read from Step 1 when a round is in flight.
- [`umbrella-wave.md`](umbrella-wave.md): multi-repo wave pauses; read from Steps 2 and 4.
- [`references/task-ledger.md`](references/task-ledger.md): `Task:` commit trailer; read for the handoff note's Stage and Next planned step.
- [`references/handoff-template.md`](references/handoff-template.md): handoff note template, written by `/rota-pause`, read by `/rota-work`.

Files in this skill

  • SKILL.md5.9 KB
  • orchestrator-pause.md1.8 KB
  • umbrella-wave.md363 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.