Goals & Strategies

Two layers: daily goals for what you want done today, and strategies for things that span days or weeks.

Goals link to entries (work you've logged) and to strategies. Hours roll up from entries through goals into strategy reports.

strategy: "ship v2 auth"
  ├── goal: "implement oauth2 pkce" (2026-04-14) → entries #41, #42
  ├── goal: "add token refresh" (2026-04-15) → entry #45
  └── goal: "write integration tests" (2026-04-16) → entry #48

Daily goals

Set goals for today

hrs goals add "implement oauth2 pkce"
hrs goals add "review deployment docs" -d 2026-04-18
hrs goals add "write migration scripts" -s 1

-d sets the date (defaults to today). -s links the goal to a strategy.

List goals

hrs goals                    # today's goals
hrs goals -d 2026-04-18     # specific date
hrs goals --format json      # machine-readable

Complete a goal

hrs goals done 1             # mark goal #1 complete
hrs goals done 1 -e 41,42   # complete and link entries #41 and #42

Linking entries connects the work you logged to the goal it achieved.

Link entries to a goal

hrs goals link 1 -e 41,42   # link entries without completing

Reopen or delete

hrs goals undo 1             # reopen a completed goal
hrs goals rm 1               # delete a goal

Strategies

Strategies span multiple days. Daily goals link up to them, and hrs rolls up progress across all linked goals.

Create a strategy

hrs strategy add -t "ship v2 auth" -desc "oauth2, token refresh, integration tests"

Title can also be passed as a positional argument:

hrs strategy add "ship v2 auth"

List strategies

hrs strategy                         # all strategies
hrs strategy -status active          # filter by status
hrs strategy --format json           # machine-readable

View a strategy report

hrs strategy 1                       # shorthand for report
hrs strategy report 1                # explicit
hrs strategy report 1 --format json  # machine-readable

The report shows goal completion (e.g. 3/5 done), total hours rolled up from linked entries, and a list of all goals.

Manage lifecycle

hrs strategy done 1          # mark as completed
hrs strategy archive 1       # pause (archive)
hrs strategy reopen 1        # set back to active
hrs strategy edit 1 -t "new title" -desc "updated description"
hrs strategy rm 1            # delete (unlinks goals, doesn't delete them)

Linking it all together

The typical workflow:

  1. Create a strategy for a multi-day initiative
  2. Each morning, set daily goals linked to that strategy
  3. As you complete work, log entries with hrs log
  4. Mark goals done and link the entries that achieved them
  5. Check strategy reports to see overall progress
# 1. create strategy
hrs strategy add -t "migrate to postgres"

# 2. set today's goals, linked to the strategy (-s flag)
hrs goals add "schema migration scripts" -s 1
hrs goals add "update connection pooling" -s 1

# 3. log work as you go
hrs log -c dev -t "wrote migration scripts" -b "up/down for users table;seed data" -e 2

# 4. complete goal, link the entry
hrs goals done 1 -e 50

# 5. check progress
hrs strategy 1

Link goals to a strategy with -s on the CLI or strategy_id via HTTP.

TUI support

The TUI has a dedicated goals view. Press tab to switch between entries and goals. See TUI explorer for all keybindings.