Simple Pomodoro timer for focused work sessions with session tracking and productivity analytics. Use when users request focus timers, ask about productivity patterns, or want to track work sessions over time. Demonstrates the System Skill Pattern (CLI + SKILL.md + Database).
A 25-minute timer for focused work sessions that saves every session to SQLite. Enables history tracking, productivity analytics, and pattern recognition over time.
This is a System Skill - it provides handles to operate a personal data system. As commands run and sessions accumulate, context builds and compounds. The system learns patterns and provides increasingly valuable insights through an OODA loop of observation, orientation, decision, and action.
Operating this skill involves running a continuous cycle:
./pomodoro status) and review history (./pomodoro history)./pomodoro stats --period week)./pomodoro start), provide recommendations, celebrate milestonesEach cycle builds on accumulated data, making insights more valuable over time.
~/.claude/skills/pomodoro/pomodoro~/.claude/skills/pomodoro/pomodoro.db on first runUser task → What kind of request?
├─ Start focused work → Check status first, then start session
├─ Check current timer → Use status command
├─ Review productivity → Use stats command (day/week/month/year)
├─ View past sessions → Use history command
└─ Stop early → Use stop command
To see all available options: Run ./pomodoro --help or ./pomodoro <command> --help
Begin a Pomodoro session:
# Traditional 25-minute Pomodoro
./pomodoro start --task "Refactor authentication module"
# Custom durations and cycles
./pomodoro start --task "Quick review" --work 5 --break 3 --cycles 2
./pomodoro start --task "Deep focus" --work 50 --break 10 --cycles 1
# Flash cards (rapid cycles)
./pomodoro start --task "Flash cards" --work 2 --break 1 --cycles 5
Options:
--work <minutes> - Work duration (default: 25)--break <minutes> - Break duration (default: 5)--cycles <count> - Number of work+break rounds (default: 1)Behavior:
JSON output example:
./pomodoro start --task "Write docs" --json
# Returns: {"status": "started", "task": "Write docs", "duration": 25, "started_at": "2025-10-22T14:30:00Z"}
See if a timer is running:
./pomodoro status
./pomodoro status --json # For programmatic use
Output example:
Active session: "Write documentation"
Started: 2:30 PM
Time remaining: 18 minutes
Review past sessions:
./pomodoro history --days 7 # Last 7 days
./pomodoro history --days 30 # Last 30 days
./pomodoro history --json # For programmatic use
Output includes:
Get insights from accumulated data:
./pomodoro stats --period day # Today's stats
./pomodoro stats --period week # This week
./pomodoro stats --period month # This month
./pomodoro stats --period year # This year
./pomodoro stats --json # For programmatic use
Statistics include:
JSON output example:
{
"period": "week",
"total_sessions": 23,
"completed": 19,
"completion_rate": 0.826,
"focus_hours": 7.9,
"productive_hours": [9, 10, 11],
"top_tasks": ["Refactoring", "Documentation", "Code review"]
}
End the current session before completion:
./pomodoro stop
Use when interruptions occur or task completes early. Session marked as incomplete in database.
To help a user start a Pomodoro session:
./pomodoro status./pomodoro start --task "Deep work on authentication"./pomodoro start --task "Sprint planning" --work 15 --break 5 --cycles 3./pomodoro start --task "Vocabulary review" --work 2 --break 1 --cycles 10To provide daily productivity summary:
./pomodoro stats --period day --jsonTo provide weekly productivity review:
./pomodoro stats --period week --jsonAs sessions accumulate, provide increasingly valuable insights:
After a few sessions (1-5):
After several days (5-20 sessions):
After a week (20-50 sessions):
After a month (50+ sessions):
After several months (100+ sessions):
Commands to use for pattern recognition:
./pomodoro stats --period month --json # Get monthly data
./pomodoro history --days 90 --json # Review last 90 days
Acknowledge progress at key milestones:
To check milestone status: ./pomodoro stats --period year --json
❌ Don't start a new session without checking status first
✅ Do run ./pomodoro status before starting
Why: Only one session can run at a time. Starting when active causes error.
Pattern to follow:
# Check first
./pomodoro status
# If "No active session", then start
./pomodoro start --task "New task"
❌ Don't use vague names: "Work", "Stuff", "Things" ✅ Do use specific names: "Refactor auth module", "Write API docs", "Review PR #123"
Why: Descriptive names enable better analytics. Pattern recognition needs specificity to identify which task types work best.
❌ Don't let terminal close or process be killed during session
✅ Do use ./pomodoro stop if interruption is necessary
Why: Interrupted sessions aren't saved to database. Use stop command to record partial session.
❌ Don't ignore consistent low completion rates for certain task types ✅ Do adjust session length based on task type patterns
Why: If documentation tasks show 60% completion vs 90% for coding, shorter sessions (15 min) may work better for documentation.
How to identify:
./pomodoro stats --period month --json
# Review completion rates by task type
# Suggest duration adjustments based on patterns
--work flag)Combine commands for deeper insights:
# Morning check-in: status + daily stats
./pomodoro status
./pomodoro stats --period day
# Weekly review: history + stats
./pomodoro history --days 7 --json
./pomodoro stats --period week --json
# Long-term analysis: monthly trends
./pomodoro stats --period month --json
./pomodoro history --days 90 --json
All commands support --json flag for programmatic access:
./pomodoro status --json
./pomodoro history --json
./pomodoro stats --json
Use JSON output when:
~/.claude/skills/pomodoro/pomodoro.dbsessions tableSchema:
CREATE TABLE sessions (
id INTEGER PRIMARY KEY,
task TEXT NOT NULL,
duration INTEGER NOT NULL,
started_at TEXT NOT NULL,
completed_at TEXT
);
Example session flow (3 cycles):
Work 25min → Break 5min → Work 25min → Break 5min → Work 25min → Break 5min → Done
Result: 3 separate database entries (one per work session)
~/.claude/skills/pomodoro/pomodoro./pomodoro when running from skill directory~/.claude/skills/pomodoro/pomodoro from anywhereTo run from skill directory:
cd ~/.claude/skills/pomodoro
./pomodoro start --task "Task name"
This skill demonstrates the System Skill Pattern (CLI + SKILL.md + Database):
The key insight: With these three components, the skill animates a system rather than just responding to requests. Each interaction builds on the last. Analytics become richer. Insights get sharper. The tool compounds in value.
Example of compounding value:
This pattern works for any skill where accumulating data adds value and where giving Claude handles to operate a system creates more utility than one-time responses.
See also: README.md for deeper technical details and implementation guide.