claude-morning
skill
Warn
Health Warn
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 16 GitHub stars
Code Pass
- Code scan — Scanned 5 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
Purpose
This tool provides a lightweight Docker container that runs a daily cron job to send a "ping" message to Claude. The primary goal is to keep a Claude subscription session active while incurring minimal API costs.
Security Assessment
Overall Risk: Medium. The tool inherently handles sensitive data because it requires you to authenticate inside the container, meaning your Claude auth state is persisted in a local Docker volume. It does execute shell commands via a daily cron job and makes external network requests to the Claude API. The light code audit found no dangerous patterns, hardcoded secrets, or requests for overly broad permissions, which is reassuring. However, you are trusting the maintainer's pre-built Docker image with your active session credentials.
Quality Assessment
The project appears to be actively maintained, with repository activity as recent as today. It has garnered 16 GitHub stars, indicating a small but present level of community trust. The primary drawback is the complete absence of a license file. Without an explicit open-source license, the code is technically under exclusive copyright, which may restrict how developers can legally use, modify, or distribute it in their own projects.
Verdict
Use with caution: the code itself is clean and functional, but the lack of a formal license and the inherent requirement to expose your active API credentials to a container should give enterprise users pause.
This tool provides a lightweight Docker container that runs a daily cron job to send a "ping" message to Claude. The primary goal is to keep a Claude subscription session active while incurring minimal API costs.
Security Assessment
Overall Risk: Medium. The tool inherently handles sensitive data because it requires you to authenticate inside the container, meaning your Claude auth state is persisted in a local Docker volume. It does execute shell commands via a daily cron job and makes external network requests to the Claude API. The light code audit found no dangerous patterns, hardcoded secrets, or requests for overly broad permissions, which is reassuring. However, you are trusting the maintainer's pre-built Docker image with your active session credentials.
Quality Assessment
The project appears to be actively maintained, with repository activity as recent as today. It has garnered 16 GitHub stars, indicating a small but present level of community trust. The primary drawback is the complete absence of a license file. Without an explicit open-source license, the code is technically under exclusive copyright, which may restrict how developers can legally use, modify, or distribute it in their own projects.
Verdict
Use with caution: the code itself is clean and functional, but the lack of a formal license and the inherent requirement to expose your active API credentials to a container should give enterprise users pause.
Ping Claude every morning with minimum cost
README.md
claude-morning
A lightweight Docker container that runs Claude Code on a daily schedule to keep your Claude subscription session active.
How it works
- Runs as a persistent container (24/7) via Docker Compose
- A cron job fires
claude -p "ping"at 8AM daily using Haiku (minimal cost) - Auth state is persisted in
./data/so you only log in once - Logs timestamp and cost to stdout on each run
Usage
Option A: Pull from GHCR (recommended)
Create a docker-compose.yml:
services:
claude-morning:
image: ghcr.io/narze/claude-morning:latest
volumes:
- claude-data:/root/.claude
command: daemon
environment:
- CLAUDE_MORNING_CRON_SCHEDULE=0 8 * * *
- CLAUDE_MORNING_TZ=Asia/Bangkok
restart: unless-stopped
volumes:
claude-data:
Then:
docker compose up -d
docker compose exec -it claude-morning claude
# log in from within the TUI
Option B: Build from source
git clone https://github.com/narze/claude-morning
cd claude-morning
docker compose build
docker compose up -d
docker compose exec -it claude-morning claude
# log in from within the TUI
Configuration
| Environment variable | Default | Description |
|---|---|---|
CLAUDE_MORNING_CRON_SCHEDULE |
0 8 * * * |
Cron schedule for ping |
CLAUDE_MORNING_TZ |
(none/UTC) | Timezone (e.g. Asia/Bangkok) |
Examples
Run at 6 AM in Tokyo timezone
environment:
- CLAUDE_MORNING_CRON_SCHEDULE=0 6 * * *
- CLAUDE_MORNING_TZ=Asia/Tokyo
Useful commands
# Check cron is configured correctly
docker compose exec claude-morning cat /etc/crontabs/root
# Tail the ping log
docker compose exec claude-morning tail -f /var/log/claude-ping.log
# Run ping manually
docker compose exec claude-morning /scripts/ping.sh
# Run ping with full JSON output
docker compose exec claude-morning /scripts/ping.sh --debug
# Re-authenticate
docker compose exec -it claude-morning claude
Development
git clone https://github.com/narze/claude-morning
cd claude-morning
docker compose build
docker compose up -d
# Test the ping script
docker compose exec claude-morning /scripts/ping.sh --debug
Files
Dockerfile — node:24-alpine + jq + claude-code
entrypoint.sh — daemon mode runs crond; otherwise passes args to claude
scripts/ping.sh — runs claude -p "ping" and logs timestamp + cost
scripts/setup-cron.sh — writes crontab from $CLAUDE_MORNING_CRON_SCHEDULE
data/ — persisted Claude auth state (gitignored)
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found