# Ots Tick

> Scheduled hourly tick. Writes an Hour node only when the window has closed segments and no open ones. Sparse.

- Skill: `spillwavesolutions/ots-tick` (Agent Skill)
- Install (CLI): `npx skillmds@latest add spillwavesolutions/ots-tick`
- Raw SKILL.md: https://api.skillmd.com/api/skills/spillwavesolutions/ots-tick/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: spillwavesolutions (https://skillmd.com/u/spillwavesolutions)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/spillwavesolutions/ots-tick

---


```bash
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/ots_common.py" tick-hour \
  --period 2026-08-21T14 \
  --author "$SECOND_BRAIN_IDENTITY" --bundle "$SECOND_BRAIN_ROOT"
```

- No segments in the window → no node is written.
- An open segment in that Hour → skip. Do not write partial summaries. A closed segment is not partial.
- Earlier Hours a long session already crossed hold only closed segments and finalize on their normal tick. At most one Hour per running session is un-finalized.
- Re-running over an already-finalized Hour is a no-op.

Pass `--ensure-parents` to create missing Year→Day containers. Default is sparse.

Upstream of the tick: `ots_tail_jsonl.py` (snapshot, no LLM). Downstream: `ots summarize --period` (Edition A or B, inline), then `rollup`. Overnight pointers stay a separate process. `ots print-cron` prints a crontab that runs once + tick-hour + summarize.

