Files
cron-checker/CLAUDE.md
T
argoyle 5293e94e21
cron-checker / vulnerabilities (pull_request) Successful in 4m29s
cron-checker / test (pull_request) Successful in 6m6s
docs: add CLAUDE.md for Claude Code guidance
2026-01-09 16:39:14 +01:00

62 lines
1.7 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
A Kubernetes monitoring tool that checks for CronJobs not running according to schedule and sends Slack notifications. It runs as a container inside a K8s cluster, polling all CronJobs every 60 seconds.
## Common Commands
```bash
# Run tests
go test ./...
# Run tests with race detection and coverage
go test -race -coverprofile=coverage.txt ./...
# Build the binary
CGO_ENABLED=0 go build -o release/cron-checker -ldflags '-w -s'
# Check for vulnerabilities
govulncheck ./...
# Format and vet
go fmt ./...
go vet ./...
# Check for unused modules
go mod tidy
```
## Architecture
This is a single-file Go application (`main.go`) with comprehensive tests (`main_test.go`).
**Core Components:**
- `doCheck()` - Main loop that polls K8s CronJobs, parses cron schedules, and sends Slack alerts for overdue jobs
- `Client` / `ClientProvider` interfaces - Abstractions over K8s client for testability
- `ConfigProvider` / `InClusterProvider` - Handles K8s in-cluster authentication
**Key Dependencies:**
- `k8s.io/client-go` - Kubernetes API client
- `github.com/robfig/cron` - Cron schedule parsing
- `github.com/multiplay/go-slack` - Slack webhook integration
- `github.com/alecthomas/kingpin/v2` - CLI flag parsing
**Configuration:**
- `SLACK_URL` env var or `--slack-url` flag (required) - Slack webhook URL for notifications
## Building Docker Image
The Dockerfile performs a multi-stage build that runs fmt, vet, and tests before building:
```bash
docker build -t cron-checker .
```
To extract coverage report:
```bash
docker build --target export -o . .
```