Minimalist CLI for engineers to log daily work
Project description
daily
Minimalist CLI for engineers to log daily work. Perfect for daily standups.
Requirements
- Python 3.11 or higher
fzf(optional, required only fordaily searchcommand)
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 uv (recommended)
uv tool install daily-cli-tool
Or specify a Python version if you don't have Python 3.11+ as default:
uv tool install daily-cli-tool --python 3.11
Note: Install uv from here if you don't have it.
Using pipx
pipx install daily-cli-tool
Or specify a Python version if needed:
pipx install daily-cli-tool --python python3.11
Note: Install pipx from here if you don't have it.
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
From source with uv (for development)
# Clone the repository
git clone https://github.com/creusvictor/daily-cli.git
cd daily-cli
# Install
uv sync
# Run
uv run daily --help
Using pip
pip install daily-cli-tool
From source
git clone https://github.com/creusvictor/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
# Add a quick note
daily quick "Check new API documentation" --tags api
# 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 quick "text" |
Add a quick note | Quick Notes |
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
QUICK NOTES
- Check new API documentation
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daily_cli_tool-1.1.1.tar.gz.
File metadata
- Download URL: daily_cli_tool-1.1.1.tar.gz
- Upload date:
- Size: 649.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfa1ddc3f3e12b2337c860e766d5c3ec1041060a9b96dccd35f6e039b403885e
|
|
| MD5 |
978bc9665e57093861f3b2a17f22a44c
|
|
| BLAKE2b-256 |
b64916361ec5e136e5acc18e6b6b7c1e5880445a711df2129c3a8624f260976c
|
Provenance
The following attestation bundles were made for daily_cli_tool-1.1.1.tar.gz:
Publisher:
workflow.yml on creusvictor/daily-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daily_cli_tool-1.1.1.tar.gz -
Subject digest:
cfa1ddc3f3e12b2337c860e766d5c3ec1041060a9b96dccd35f6e039b403885e - Sigstore transparency entry: 985033629
- Sigstore integration time:
-
Permalink:
creusvictor/daily-cli@a3df4b065393c16262b6a40df1dc5608b220351f -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/creusvictor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@a3df4b065393c16262b6a40df1dc5608b220351f -
Trigger Event:
release
-
Statement type:
File details
Details for the file daily_cli_tool-1.1.1-py3-none-any.whl.
File metadata
- Download URL: daily_cli_tool-1.1.1-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c789c3c0e973fa5a4525fdcd89fde46ccf9fbb680a5001fceb3bd0d0f0359e41
|
|
| MD5 |
e365bf1879eeeb779443db52e74c4d5a
|
|
| BLAKE2b-256 |
ade4f9b8f975eb60cc4e60ba1867755ba81b3ad80108321961002b413bc120f9
|
Provenance
The following attestation bundles were made for daily_cli_tool-1.1.1-py3-none-any.whl:
Publisher:
workflow.yml on creusvictor/daily-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daily_cli_tool-1.1.1-py3-none-any.whl -
Subject digest:
c789c3c0e973fa5a4525fdcd89fde46ccf9fbb680a5001fceb3bd0d0f0359e41 - Sigstore transparency entry: 985033632
- Sigstore integration time:
-
Permalink:
creusvictor/daily-cli@a3df4b065393c16262b6a40df1dc5608b220351f -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/creusvictor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@a3df4b065393c16262b6a40df1dc5608b220351f -
Trigger Event:
release
-
Statement type: