Skip to main content

Minimalist CLI for engineers to log daily work

Project description

daily

Minimalist CLI for engineers to log daily work. Perfect for daily standups.

PyPI version Python versions

Features

  • Fast capture: Log work in under 10 seconds
  • Markdown-based: Human-readable files, Git-friendly
  • Tag support: Filter entries by project or topic
  • Cheat sheet: Quick summary for daily standups
  • Interactive search: Browse and edit past notes with fzf
  • No database: Plain files in ~/.daily/dailies/

Installation

Using pipx (recommended)

pipx install daily-cli-tool

That's it! The daily command is now available globally.

From source (for development)

# Clone the repository
git clone https://github.com/creusvictor/daily-cli.git
cd daily-cli

# Install with pipx
pipx install .

# Or install with uv
uv sync

Using uv (for development)

# Clone the repository
git clone https://github.com/user/daily-cli.git
cd daily-cli

# Install
uv sync

# Run
uv run daily --help

Using pip

pip install daily-cli

From source

git clone https://github.com/user/daily-cli.git
cd daily-cli
pip install -e .

Quick Start

# Log completed work
daily did "Fixed CI/CD pipeline" --tags cicd,infra

# Plan today's work
daily plan "Review pending PRs" --tags code-review

# Log a blocker
daily block "Waiting for AWS access" --tags aws

# Log a meeting
daily meeting "Sprint planning" --tags team

# Show cheat sheet for standup
daily cheat

Commands

Command Description Section
daily did "text" Log completed work Done
daily plan "text" Plan work for today To Do
daily block "text" Log a blocker Blockers
daily meeting "text" Log a meeting Meetings
daily cheat Show standup cheat sheet -
daily search Search and open daily files -

All commands support --tags or -t for tagging:

daily did "Deploy to production" --tags deploy,aws
daily did "Code review" -t review

Cheat Sheet

The daily cheat command generates a clean summary for standups:

DONE
- Fixed CI/CD pipeline
- Deployed new feature

MEETINGS
- Sprint planning
- 1:1 with manager

TO DO
- Review pending PRs
- Write documentation

BLOCKERS
- Waiting for AWS access

Options

# Filter by tags
daily cheat --tags aws

# Show today's file instead of yesterday's
daily cheat --today

# Plain text output (no colors)
daily cheat --plain

Weekend Logic

By default, daily cheat skips weekends when looking for "yesterday's" file:

  • On Monday, it shows Friday's entries
  • On Saturday or Sunday, it shows Friday's entries

This matches typical standup workflows where you report on the last workday.

# Override: always skip weekends
daily cheat --workdays

# Override: use literal yesterday (even if weekend)
daily cheat --no-workdays

Configure the default in ~/.daily/config.toml:

# Set to false to always use literal yesterday
skip_weekends = true

Search

The daily search command provides an interactive fuzzy finder (fzf) to browse and edit your daily notes:

# Search all daily files
daily search

# Filter by tags (only show files with these tags)
daily search --tags aws,deploy
daily search -t projectA

Features:

  • Interactive selection: Use arrow keys or fuzzy search to find notes
  • Preview panel: See the content of each note before opening
  • Opens in $EDITOR: Selected file opens in your preferred editor (vim, nano, etc.)
  • Tag filtering: Only show files containing specific tags
  • Sorted by date: Newest files appear first
  • Tag display: Each file shows all tags used (e.g., 2026-02-20 (Friday) - tags: aws,deploy)

Requirements: This command requires fzf to be installed:

# Ubuntu/Debian
sudo apt-get install fzf

# macOS
brew install fzf

# Arch Linux
sudo pacman -S fzf

File Structure

Daily notes are stored in ~/.daily/dailies/ with format YYYY-MM-DD-daily.md:

---
type: daily
date: 2026-01-27
---

## ✅ Done
- Fixed CI/CD pipeline #tags: cicd,infra

## ▶️ To Do
- Review pending PRs

## 🚧 Blockers
- Waiting for AWS access #tags: aws

## 🗓 Meetings
- Sprint planning #tags: team

## 🧠 Quick Notes

Configuration

Create ~/.daily/config.toml to customize behavior:

# Directory where daily notes are stored
dailies_dir = "~/.daily/dailies"

# Skip weekends in daily cheat (Monday shows Friday)
skip_weekends = true

Custom directory

Set DAILY_DIR environment variable (takes priority over config file):

export DAILY_DIR=/path/to/my/dailies

Priority: Environment variable > Config file > Default (~/.daily/dailies)

Development

# Install dev dependencies
uv sync

# Run tests
uv run pytest

# Run tests with coverage
uv run pytest --cov=daily

# Format code
uv run black daily tests

# Lint
uv run ruff check daily tests

# Type check
uv run mypy daily

FAQ

Q: Where are my notes stored? A: In ~/.daily/dailies/ by default. Each day creates a new file like 2026-01-27-daily.md.

Q: Can I edit files manually? A: Yes! Files are plain Markdown. Manual edits are preserved.

Q: Does it work with Obsidian? A: Yes! Point Obsidian to your dailies directory for a nice viewing experience.

Q: Can I use it with Git? A: Absolutely. The files are designed to be Git-friendly.

Q: What if I forget to log something? A: You can edit the Markdown file directly, or use the API with a specific date.

Q: Why does daily cheat show Friday's entries on Monday? A: By default, weekends are skipped so Monday's standup shows Friday's work. Use --no-workdays to show literal yesterday, or set skip_weekends = false in config.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

daily_cli_tool-1.0.0.tar.gz (57.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

daily_cli_tool-1.0.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file daily_cli_tool-1.0.0.tar.gz.

File metadata

  • Download URL: daily_cli_tool-1.0.0.tar.gz
  • Upload date:
  • Size: 57.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for daily_cli_tool-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1392ab51dfdd52bbd8ced4bca390291285470c3cbfdcead311ca69e0907dad27
MD5 3cadf01839e6e168624095869fc6abd4
BLAKE2b-256 dc278e0ac726eabd7479cef1fa6e86c1c1ab883edf8d7004906d016b986071fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for daily_cli_tool-1.0.0.tar.gz:

Publisher: workflow.yml on creusvictor/daily-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file daily_cli_tool-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: daily_cli_tool-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for daily_cli_tool-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 12eeecd62d7c39eb7ecb1613e5f3986d91cd3ae409131ac0dd0c81817cdc60b2
MD5 e727b96d5f3407ce9fd37a930996cb8f
BLAKE2b-256 719e214a810696029a25d3019dc979c09c921a6d52421a1e19d1f991b3f50a72

See more details on using hashes here.

Provenance

The following attestation bundles were made for daily_cli_tool-1.0.0-py3-none-any.whl:

Publisher: workflow.yml on creusvictor/daily-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page