# Claude Code Ping Start 5h Quota

睡前/离开前额度耗尽时，设置一次性本机定时器，在 Claude 订阅额度重置后自动发一条极简 claude -p 消息，立刻开启新的 5...

- Repository: https://github.com/daymade/claude-code-skills (1509 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add daymade/claude-code-skills --skill claude-code-ping-start-5h-quota -g -a claude-code -y`
Codex: `npx skills add daymade/claude-code-skills --skill claude-code-ping-start-5h-quota -g -a codex -y`
Cursor: `npx skills add daymade/claude-code-skills --skill claude-code-ping-start-5h-quota -g -a cursor -y`
Gemini CLI: `npx skills add daymade/claude-code-skills --skill claude-code-ping-start-5h-quota -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add daymade/claude-code-skills`

## Description

睡前/离开前额度耗尽时，设置一次性本机定时器，在 Claude 订阅额度重置后自动发一条极简 claude -p 消息，立刻开启新的 5 小时用量窗口, , 用户睡醒时新窗口已跑掉大半，等于白赚一个 冷却期。Use when 用户说「还有 X 小时重置额度，帮我定时戳一下 Claude」「我去睡觉了， 到点 ping 一下开启新窗口」「额度用完了，重置后帮我踩个点」「设个定时器开启新的 5 小时 冷却期」，或提到 定时戳、戳 Claude、quota ping、开窗、额度重置后自动发消息。 仅限一次性定时任务与 macOS 本机（caffeinate/BSD date）；周期性任务用 /loop 或 cron， 查询 ChatGPT/Codex 何时重置用 tibo-reset-codex，分析额度为什么烧完用 claude-usage-analyst。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Claude Code Ping · Start 5h Quota, 额度重置后定时戳一下，开启新的 5 小时窗口

## 原理（为什么这么做有价值）

Claude 订阅的 5 小时用量窗口从**窗口内第一条请求**开始计时，而不是按固定时刻轮转。
所以额度耗尽后如果没人发消息，新窗口就一直不开始计时；用户睡醒后亲自发第一条消息，
等于从那一刻才开始一个全新的 5 小时。反过来，在重置时刻刚过时由定时任务替用户发一条
极简消息，新窗口就从深夜开始计时, , 用户睡醒时这个窗口已经消耗掉大半时长（而几乎没
消耗额度），相当于把一个冷却期藏进了睡眠时间。

一次戳的成本极小：一条 `claude -p` 单轮消息。2026-08-29 实测全流程成功。

## 入口分流

- 用户给**相对时间**（「还有 1 小时 20 分钟重置」）→ 等待分钟数 = 相对分钟数 + 5 分钟缓冲。
- 用户给**绝对时刻**（「6 点 15 重置」）→ 先 `date` 拿当前时间算差值；目标钟面时刻早于或等于
  当前时间，一律按**次日**同刻理解（深夜说「6 点 15 重置」指明早，睡前跨零点是本 skill 的
  常态输入，不是用户输错），算出差值后再加 5 分钟缓冲。
- 用户要**周期性/每天都戳** → 超出本 skill 边界，用 /loop 或系统 cron，别用一次性 sleep 链。
- 用户问 **ChatGPT/Codex 什么时候重置** → tibo-reset-codex skill。
- 用户问**额度为什么烧这么快** → claude-usage-analyst skill。

## 执行步骤

### Step 0：幂等检查（已有定时器就别再起一个）

```bash
ps -ef | grep -E 'claude -p "Reply with exactly: ok"' | grep -v grep
```

有输出说明已有一个 ping 定时器在跑, , 报告用户现有定时器的启动时间，问清是否要替换，
不要默默叠加第二个。替换的做法：按 Troubleshooting「用户中途改主意要取消」行的特征串
pkill 杀掉旧链，ps 确认干净后按新参数重走 Step 1, 4 全流程（尤其 Step 4, , 新定时器的
output 路径必须重新交代，否则唤醒通知一旦丢失，兜底路径还指着已被杀掉的旧定时器）。

### Step 1：算时间并报告

```bash
date '+%Y-%m-%d %H:%M:%S'; date -v+<等待分钟数>M '+目标时刻 %H:%M:%S'
```

换算公式（占位符全文统一）：`等待分钟数 = 距重置分钟数 + 5`；`SLEEP_SECONDS = 等待分钟数 × 60`。
例：「还有 1 小时 20 分钟重置」→ 85 分钟 → `SLEEP_SECONDS=5100`。
把具体的触发时刻（几点几分）报告给用户，不要只说「85 分钟后」, , 用户睡前想知道的是墙钟时刻。

### Step 2：启动定时进程（run_in_background）

用 Bash 工具、`run_in_background: true` 运行：

```bash
caffeinate -is /bin/sh -c 'sleep <SLEEP_SECONDS> && cd "$HOME" && claude -p "Reply with exactly: ok"'
```

**必须 run_in_background**：前台 sleep 会被 harness 拦截；后台任务是 detached 进程，
且退出时会重新唤醒当前会话（见 Step 5）。启动回执里有任务 output 文件路径, , 记住它，
Step 4 要把它写进给用户的交代（这是路径唯一可靠的持久化机会）。

### Step 3：独立读回验证

启动回执不算数，用 ps 确认进程链真的存在：

```bash
ps -ef | grep -E 'caffeinate -is|sleep <SLEEP_SECONDS>' | grep -v grep
```

**预期输出**：至少三行, , `/bin/sh -c sleep ...`、`caffeinate -is ...`、`sleep <SLEEP_SECONDS>`。
少了 `sleep` 行说明进程没起来，回到 Step 2 查报错。

### Step 4：向用户交代清楚

The rest: https://github.com/daymade/claude-code-skills/blob/HEAD/daymade-claude-code/claude-code-ping-start-5h-quota/SKILL.md
