A system that sends personalized daily lessons on any topic via email, powered by Claude-generated content, SendGrid, and GitHub Actions.
learn-anything/
├── CLAUDE.md # This file
├── config.json # User config (topic, level, goal) - created by /setup
├── lessons/
│ ├── lesson-01.json # Generated lessons
│ └── ...
├── scripts/
│ └── send-lesson.js # Node script to send today's lesson via SendGrid
├── package.json
├── .claude/
│ └── commands/
│ ├── setup.md # /setup command
│ └── generate-lessons.md # /generate-lessons command
├── .github/
│ └── workflows/
│ └── daily-lesson.yml # Cron job: 6am MT daily
└── .gitignore
- User runs
/setupto configure what they want to learn, their level, and goals - User runs
/generate-lessonsto generate personalized lesson content - User pushes repo to GitHub and configures secrets
- GitHub Actions cron job runs daily at 6am MT, sending one lesson per day via SendGrid
/setup- Interactive setup: asks what you want to learn, your level, goal, and preferences. Saves toconfig.json./generate-lessons- Generates lesson JSON files based on your config. Asks how many days of lessons you want, designs a curriculum, and creates all lesson files.
daysSince(START_DATE) + 1, clamped to 1 through totalLessons. After the last lesson, the script exits without sending.
| Secret | Description |
|---|---|
SENDGRID_API_KEY |
Your SendGrid API key |
TO_EMAIL |
Email address to receive lessons |
FROM_EMAIL |
Verified sender email in SendGrid |
| Variable | Description |
|---|---|
START_DATE |
Course start date in YYYY-MM-DD format |
- Run
/setupin Claude Code to configure your learning preferences - Run
/generate-lessonsto generate your personalized curriculum - Create a SendGrid account and get an API key
- Verify a sender email in SendGrid
- Push this repo to GitHub
- Add the secrets above in GitHub repo Settings > Secrets > Actions
- Add START_DATE as a repository variable in Settings > Variables > Actions
- The workflow will run daily at 6am MT
npm install
SENDGRID_API_KEY=your_key TO_EMAIL=you@example.com FROM_EMAIL=sender@example.com START_DATE=2026-03-02 node scripts/send-lesson.js{
"day": 1,
"title": "Lesson Title",
"subject": "Topic Lesson Day 1: Lesson Title",
"body_html": "<html>...</html>",
"body_text": "Plain text version..."
}