Features

This page provides a condensed reference for all jott features. See Quick Start for basic usage.

Notes

Attach detailed notes to any task with Shift+N. Notes open in your $EDITOR and support rich text, code snippets, and links.

  • Tasks with notes display a pencil icon.

  • Press Shift+N again to edit existing notes.

  • Clear all content to remove notes.

  • Notes are preserved when moving tasks between projects.

Inline notes display can be toggled with .f, showing up to 3 lines of notes directly in the task list with box-drawing characters.

Subtask Sync from Notes

Add org-mode checklists to notes to create subtasks automatically:

- [ ] Set up database schema
- [ ] Write API endpoints
- [X] Create project skeleton

On save, unchecked items ([ ]) are created as subtasks with parent:{id} labels. Already-checked items ([X]) are skipped — they won’t create new tasks. If you check an item after it was synced, re-saving updates its status to done. Re-saving is safe — duplicates are prevented by text matching.

Press Ctrl+S for manual sync without opening the editor.

Parent/Subtask Visual Indicators

Parent/subtask relationships are visible in the task list:

[ ] 10. Build auth system              (3 subtasks)
[ ] 11. ↳ Research API options
[ ] 12. ↳ Write implementation plan
[ ] 13. ↳ Set up dev environment
  • Subtask prefix: Dim arrow before subtask text

  • Parent suffix: (N subtasks) expanded or (N subtasks) collapsed

  • Recursive depth: Nested subtasks show deeper arrows (↳↳)

  • Press Ctrl+L to assign a parent task via interactive picker

Collapse / Expand Subtasks

Press .s (leader chord: . then s within 500ms) to toggle subtask visibility:

[ ] 10. Build auth system              ▶ (3 subtasks)
[ ] 14. Unrelated task
  • Collapsed parents show yellow (N subtasks)

  • Expanded parents show dim (N subtasks)

  • Navigation automatically skips hidden children

  • State is ephemeral — resets each session (no data changes)

  • Pressing . followed by any other key types normally

Multi-Select Mode

Press Shift+V to enter multi-select mode for bulk operations:

  • Space to toggle selection on individual tasks

  • Perform delete, move, archive, or priority changes on all selected tasks

  • ESC to exit

The footer shows the count of selected tasks.

Moving Tasks Between Projects

Press .m to move the current task to another registered project. A fuzzy-search picker lets you find projects quickly. Most-used projects appear first via usage tracking. All metadata is preserved during the move.

When moving a parent task with subtasks, jott automatically gathers all descendants and moves them along, remapping parent:{id} labels to the new IDs in the destination. You’ll be prompted to confirm (e.g., “Move task + 3 subtasks to project-x?”). The same applies to .k (copy) and Ctrl+T (category transfer).

Google Calendar Integration

Bidirectional sync between jott and Google Calendar. See Configuration for setup.

Export (.G)

Choose between exporting the current task or bulk-exporting all tasks assigned to today. Time tags in military format (HHMM) set the event start time:

Team standup 0930  →  9:30 AM - 9:45 AM

Events are created with 15-minute duration in your primary calendar.

Import (Shift+I)

Fetch calendar events and cherry-pick which to import as tasks. Choose direction (past/future/today) and number of days (1–7).

  • Timed events import with a calendar icon

  • All-day events import with a date icon

  • Interactive checkbox picker for selection

Re-authenticate (Shift+3)

Force OAuth re-authentication when tokens expire or when switching accounts.

Keyword Automation

Add tasks with keyword: task text to trigger automatic actions:

Keyword

Action

Auto-Trigger

gcal:

Export to Google Calendar

Yes

ai:

Mark for AI/agent

Yes

analyze:

Analyze with Claude Code

Yes

remind:

System notification

No

all:

Broadcast to all projects

Yes

Aliases let you use shortcuts (e.g., claude: for ai:).

Claude Code Analysis

Break down complex tasks with AI using the analyze: keyword:

analyze: Implement OAuth refresh token system

Pressing Enter triggers Claude Code analysis in plan mode and writes a .jot.analysis.{id}.org file with subtask breakdown, technical approach, complexity estimate, and risk assessment. Tasks with analysis files show a clipboard indicator. Agent tasks show a robot indicator.

AI Task Suggestion

Press Shift+4 for AI-powered task suggestions based on your current task list and project context.

Broadcast to All Projects

Add a task to every registered project:

jott --all "Update dependencies"

Or use the all: keyword in interactive mode. Both methods require confirmation before broadcasting.

Visual Styling

jott uses color to enhance the interface:

  • Current task: Cyan + bold with sparkle icon

  • “Take a break” task: Green + bold with leaf icon (calming visual reminder)

  • Highlighted task: Black text on bright yellow background

  • Quick-add mode footer: Green

  • Command mode footer: Yellow

Task Highlighting

Press * (Shift+8) to open the highlight color picker with 7 colors (gray, yellow, orange, magenta, cyan, red, green). Press ~ for a quick toggle with the default color (yellow). Multiple tasks can be highlighted simultaneously. Highlight applies to the task ID number only and persists across sessions.

Smart Deletion

Deleting a task automatically sets the previous task as current, keeping you in flow. Edge cases (first task, last task, only task) are handled gracefully.

Cross-Project Task Routing

Send tasks to projects from the CLI:

jott rubber-ducky-live 'implement OAuth refresh tokens'
jott --list-projects
jott --all-projects

Auto-discovery scans ~/projects/ on first run. Use --refresh to re-scan. Projects are also auto-registered when you open them with jott if they contain a .jot.json file but aren’t in the registry yet.

MCP Server

jott includes a Model Context Protocol server for integration with Claude Code and other AI assistants. Install with:

pip install jott-cli[mcp]

See MCP — Model Context Protocol Server for the API reference.