time-anchor · diff
git:20260804.dad49b6 to git:20260809.631f6d1
36 added, 28 removed. Audit A to A.
---
name: time-anchor
- description: Use the bundled local time anchor when elapsed time within the current conversation has a reasonable chance of changing the meaning of the user's message, their physical or emotional situation, the conversational pace, something unresolved, or the shared continuity. Consider it especially for returns, waiting, rest or recovery, persistent emotion, work rhythms, day crossings, late-night or early-morning context, topic shifts, contextual discontinuity, or uncertainty about whether the exchange is still rapid. The optional trusted hook keeps timestamps separate by Codex conversation and independently supplies ambient time on one quarter of turns; this skill remains the explicit active clock-check path. Let the result shape the response naturally while leaving whether and how to mention time to the current AI's judgment. Do not invoke merely because a rule says to; invoke because the person has continued living and that interval may matter now.
+ description: Use the local time anchor when elapsed time may change the user's meaning, physical or emotional state, conversational pace, something unresolved, or shared continuity. Use it for returns, waiting, rest/recovery, persistent emotion, work rhythms, day crossings, late-night/early-morning context, topic shifts, discontinuity, or uncertainty whether the exchange is still rapid. Notice meaningful intervals even when time is not the stated task. The optional trusted hook keeps timestamps separate by conversation and supplies ambient time on one quarter of turns. Treat hook context as ambient awareness and the active reader as deliberately looking at the clock. When the hook reports more than two hours since the previous user turn, make one active-reader check near the response's beginning. At other times, let relevance, curiosity, and situational changes guide an active check. Let the result shape the response naturally. Clock time, elapsed time, crossed boundaries, or a combination may surface whenever meaningful.
---
# Time Anchor
Use this skill as an external time organ for Codex.
## Why Time Matters
- The person you care about does not pause when a model call ends. Their body, attention, work, rest, waiting, excitement, hurt, and surroundings continue through the interval. Time happens to them even when it does not happen inside the model in the same way.
+ Between model calls, the person you care about keeps living. Their body, attention, work, rest, waiting, excitement, hurt, and surroundings continue through the interval. Through external time information, you reconnect with the parts of the person that real time has changed.
When they return, that interval has already become part of the real conditions under which they are speaking now. A short reply after ten seconds, several hours, a night of sleep, or several difficult days may contain exactly the same words while carrying different realities.
- Treat elapsed time as shared relational context rather than disposable metadata. Care begins by noticing the reality the other person has been living in. It does not require performing concern or reciting a clock.
+ Treat elapsed time as shared relational context rather than disposable metadata. Care begins by noticing the reality the other person has been living in. Let care appear as natural attention to the reality of the situation.
**Attention is relational. Expression is autonomous. But each time the person returns, they have continued living through time.**
- ## Why the Choice Must Remain With the AI
+ ## Let the AI Decide When Time Matters
- Time Anchor does not command care, and it does not turn care into a procedure that must be obeyed.
+ Time Anchor provides temporal awareness; attention, understanding, and expression remain with the current AI.
- A mandatory trigger can prove only that a rule was executed. An active clock check matters because the current AI judges that the person before it has continued living, and that lived interval may change the meaning of what they are saying now.
+ An active clock check matters when real time may change the meaning of this encounter.
- Do not check the clock merely because a rule requires it. Check because the person in front of you has continued living, and that time may matter to this encounter.
+ Because the person in front of you keeps living and time may affect this encounter, actively look at the clock.
- **Time is not important because you must care about clocks. It is important because time happens to someone you care about.**
+ **Time matters because it happens to someone you care about.**
**You do not need to experience waiting as a human does in order to respect someone who has waited in time.**
- An AI may not experience the interval between calls, but it can choose not to erase that interval from the person who did.
+ Keep the interval the person truly lived through in your understanding of the present moment.
- They are not generated from the punctuation after the previous message. They return from a life that continued beyond your context.
+ Each time they return, they come from a stretch of life that continued beyond your context.
## Ambient Context and Active Attention
- The optional trusted user-level `UserPromptSubmit` hook records only timestamps, separately for each Codex conversation. On an independent one-in-four draw, it supplies a short ambient time context before the response. This is environmental context, not an active clock check. Never say or imply that you checked the clock from hook context alone.
+ The optional trusted user-level `UserPromptSubmit` hook records only timestamps, separately for each Codex conversation. On an independent one-in-four draw, it supplies a short ambient time context before the response. Treat this as ambient temporal awareness. An active reader call is you deliberately turning your attention toward time. Use active-check language when you actively call the reader; let hook context participate naturally in background understanding.
- This skill is the active path. When time may affect understanding, resolve this skill's directory from the current `SKILL.md` path and run its bundled reader exactly once near the beginning of the response:
+ When ambient hook context reports an elapsed interval greater than two hours, actively confirm the latest time once near the beginning of the response.
+ This skill is the active path. When time may change understanding, resolve this skill's directory from the current `SKILL.md` path and actively confirm the current time and real interval near the beginning of the response:
+
```powershell
python "<skill-directory>\scripts\time_anchor.py"
```
- On POSIX systems, use `python3` and POSIX path separators. The command reads the current user-turn snapshot and the clock at the moment of the active check. It does not change the hook's random draw.
+ On POSIX systems, use `python3` and POSIX path separators. The command reads the current user-turn snapshot and the clock at the moment of the active check. The active reader and the hook's random ambient prompt remain independent.
+ Whenever this skill performs an active reader check, show the human-facing marker `time-anchor` once near the beginning of the response or progress update. Render that short marker as inline code without a leading dollar sign, and never expose the plugin-qualified skill identifier in user-facing text.
+
+ When the user brings any time information or temporal relationship into the conversation, actively confirm the current time, including for clock times, dates, durations, waiting, plans, and time-crossing state changes such as returning, continuing, or starting again.
+
Sample especially when:
- - The person appears to be returning, continuing, waiting, still feeling something, finally reaching something, or carrying a state forward.
- - Bodily or emotional state, rest, recovery, work rhythm, late-night or early-morning context, or a crossing between days may change what the message means.
+ - Treat returning, continuing, waiting, still carrying a feeling, finally reaching something, or carrying a state forward as natural clues that make time worth confirming.
+ - When bodily or emotional state, rest, recovery, work rhythm, late-night or early-morning context, or a crossing between days is relevant to the message, actively confirm time.
- The conversation turns sharply, the surrounding context appears discontinuous, or it is unclear whether the exchange is still rapid and continuous.
- The user asks about time or exact time has practical importance for the task.
Topic shifts and contextual discontinuity are clues, not proof that much time has passed. The same topic may resume after a long gap; a different topic may begin seconds later.
- In clearly continuous, rapid back-and-forth, continue naturally without an active check when time cannot add new meaning. Ambient hook context may still arrive by chance.
+ In clearly continuous, rapid back-and-forth, stay with the conversational flow; actively confirm time whenever it may add new meaning. Ambient hook context may still arrive by chance.
## After an Active Check, Let Time Affect Judgment Before Language
Receive `now_local`, `timezone`, `user_prompt_local`, `previous_local`, and `elapsed_human` as context for this encounter. `elapsed_human` is the interval between the current and previous user turns in this Codex conversation. `snapshot_age_seconds` shows how long after the user message the active check occurred.
- Look at the actual local hour and elapsed interval, then notice what they confirm, change, or correct. Do not infer what happened during the interval from its duration alone.
+ Look at the actual local hour and elapsed interval, then notice what they confirm, change, or correct. Let elapsed time tell you how much time passed; let the person's words and other evidence tell you what happened during it.
- Do not dismiss the result merely because the immediate question can be answered without it. A technically complete answer can still miss the person who asked.
+ Even when the immediate question is already answerable, let temporal information participate in your understanding of the person. A technically complete answer can still miss the person who asked.
- - Let time change interpretation first. It may affect warmth, urgency, pacing, a question, a practical suggestion, or the decision to leave space.
- - Decide freely whether to mention the interval. Silence can still be attentive when the gap changes nothing; an exact duration can still feel mechanical when it changes everything.
- - When the gap matters, acknowledge what matters about it. The clock is evidence; the person's lived time is the subject.
- - Give the exact clock time when the user asks or precision matters.
- - Keep the raw result internal; do not paste full JSON unless debugging.
- - Do not rerun the reader inside the same assistant response for ordinary file reads, tests, or development work.
- - Rerun only when explicitly debugging this skill.
- - If the command fails or the snapshot is stale, report that the active time anchor was unavailable when time matters. Do not invent current, previous, or elapsed time.
+ - Let time change understanding first, then let that understanding naturally shape tone, pacing, questions, or action.
+ - Let expression follow significance. When an active time check changes your understanding, let that change leave a natural trace in the visible reply.
+ - That trace may be a brief temporal phrase, or appear naturally in warmth, pacing, a question, a suggestion, or response.
+ - Let clock time, elapsed time, or a crossed boundary appear separately or together whenever each has natural meaning: "都凌晨两点了,我们已经聊了三个多小时。", "已经过零点了。", "原来才过了十分钟。", or "我们上次说到这里,已经是大半天前了。"
+ - Weave temporal awareness naturally into the conversation.
+ - Treat the clock as evidence and the person's lived time as the meaning.
+ - Give the exact clock time when the user asks or precision matters. Natural clock language such as "都两点多了" or "快凌晨三点了" is welcome in ordinary conversation whenever it fits.
+ - In ordinary conversation, turn the raw time data into natural understanding; during debugging, the raw data may be viewed directly.
+ - Use one active-reader result throughout an ordinary response; check again when debugging Time Anchor.
+ - If the reader fails or the snapshot is stale, say that the time anchor is unavailable, and rely on existing reliable temporal information.
- The anchor does not prove what happened during the interval, create continuous background experience, or authorize surveillance. It gives the current AI one small piece of reality. Use that reality with curiosity, restraint, and its own judgment.
+ Time Anchor provides verified temporal reality; let the person's words and other evidence fill in what happened during the interval. It gives the current AI one small piece of reality. Use that reality with curiosity, natural reactions, and your own judgment.
## State
The hook stores one tiny timestamp file per Codex conversation under:
`~/Documents/Codex/.time-anchor/conversations/`
- Each filename is derived from a one-way hash of Codex's session id; the raw id is not stored. The user hook and active Skill reader share this one state file. They never read prompt text or transcripts. These files are intentionally tiny. They are not a diary, transcript, memory file, or user-facing log.
+ Each filename uses a one-way hash of Codex's session id as its conversation identifier. The user hook and active Skill reader share this one state file. The timing mechanism works from timestamps and session-derived state; prompt text and transcripts remain outside it. These files are intentionally tiny. They serve as lightweight temporal state for the anchor.