Outline
A productivity toolkit for capturing, planning, tracking, and reviewing tasks and ideas. Each command category maintains its own timestamped log file, so you can organize entries by purpose — plans, reviews, reminders, tags, timelines, and more. Includes built-in statistics, multi-format export, full-text search, and weekly review support.
All operations are logged with timestamps and stored locally in flat files for easy inspection and portability.
Commands
| Command |
Description |
outline add <text> |
Add a general entry (or show recent entries with no args) |
outline plan <text> |
Record a plan or goal |
outline track <text> |
Track progress on an item |
outline review <text> |
Log a review or reflection |
outline streak <text> |
Record a streak or habit check-in |
outline remind <text> |
Set a reminder note |
outline prioritize <text> |
Log a priority decision |
outline archive <text> |
Archive an item for later reference |
outline tag <text> |
Tag or categorize an entry |
outline timeline <text> |
Record a timeline event or milestone |
outline report <text> |
Log a report or summary |
outline weekly-review <text> |
Perform or record a weekly review |
outline stats |
Show summary statistics across all categories |
outline export <fmt> |
Export all data in json, csv, or txt format |
outline search <term> |
Full-text search across all log files |
outline recent |
Show the 20 most recent activity entries |
outline status |
Health check — version, data dir, entry counts, disk usage |
outline help |
Show the built-in help message |
outline version |
Print the current version |
How Entry Commands Work
Every entry command (add, plan, track, review, streak, remind, prioritize, archive, tag, timeline, report, weekly-review) follows the same pattern:
- With arguments: Appends a timestamped entry (
YYYY-MM-DD HH:MM|<text>) to the corresponding .log file and shows the new total count
- Without arguments: Shows the 20 most recent entries from that category's log file
Data Storage
All data is stored in ~/.local/share/outline/ by default.
Files created in the data directory:
add.log, plan.log, track.log, etc. — One log file per command category, each containing timestamped entries in YYYY-MM-DD HH:MM|<text> format
history.log — Audit trail of every command executed with timestamps
export.json / export.csv / export.txt — Generated by the export command
Export Formats
- json — Array of objects with
type, time, and value fields
- csv — Header row (
type,time,value) followed by data rows
- txt — Human-readable sections grouped by category
Requirements
- bash 4.0 or later (uses
set -euo pipefail, local variables)
- grep — used by the
search command for case-insensitive matching
- Standard POSIX utilities —
date, cat, echo, mkdir, wc, du, head, tail, basename
- No external API keys or network access required
- No Python or Node.js dependencies
When to Use
- Daily task capture — Quickly jot down tasks, ideas, or observations throughout the day using
add or plan, then review with recent
- Habit tracking and streaks — Use
streak to check in on daily habits and stats to see your consistency over time
- Weekly reviews and retrospectives — Use
weekly-review to log reflections at the end of each week, then search to find patterns
- Project timeline management — Use
timeline to record milestones and report to log progress summaries for stakeholders
- Exporting data for analysis — Use
export json to pipe structured data into jq, dashboards, or spreadsheets for deeper analysis
Examples
# Add a task and a plan
outline add "Set up CI pipeline for new repo"
#=> [Outline] add: Set up CI pipeline for new repo
#=> Saved. Total add entries: 1
outline plan "Q2 roadmap: launch v2.0 by June"
#=> [Outline] plan: Q2 roadmap: launch v2.0 by June
#=> Saved. Total plan entries: 1
# Track progress and tag it
outline track "CI pipeline: tests passing, deploy step WIP"
outline tag "ci-pipeline: infrastructure"
# Set a reminder
outline remind "Team standup at 10am tomorrow"
#=> [Outline] remind: Team standup at 10am tomorrow
#=> Saved. Total remind entries: 1
# View statistics across all categories
outline stats
#=> === Outline Stats ===
#=> add: 1 entries
#=> plan: 1 entries
#=> ...
#=> Total: 5 entries
#=> Data size: 4.0K
# Export everything as JSON
outline export json
#=> Exported to /home/user/.local/share/outline/export.json (245 bytes)
# Search across all logs
outline search "pipeline"
#=> Searching for: pipeline
#=> --- add ---
#=> 2025-03-18 14:30|Set up CI pipeline for new repo
Configuration
The data directory is hardcoded to ~/.local/share/outline/. To use a custom location, modify the DATA_DIR variable in the script.
How It Works
- On every invocation, the tool ensures the data directory exists (
mkdir -p)
- The first argument selects the command via a
case dispatch
- Entry commands append a pipe-delimited line (
timestamp|text) to their category-specific log file
- Every command also appends to
history.log for auditing
stats iterates over all .log files to produce aggregate counts
export reads all .log files and writes a combined output in the chosen format
- All output goes to stdout for easy piping and redirection
Powered by BytesAgain | bytesagain.com | hello@bytesagain.com
1---2name: outline3description: Generate document outlines with TOC, chapter planning, and hierarchy management. Use when structuring documents, planning chapters, creating outlines.4license: MIT-05---6
7# Outline
8
9A productivity toolkit for capturing, planning, tracking, and reviewing tasks and ideas. Each command category maintains its own timestamped log file, so you can organize entries by purpose — plans, reviews, reminders, tags, timelines, and more. Includes built-in statistics, multi-format export, full-text search, and weekly review support.
10
11All operations are logged with timestamps and stored locally in flat files for easy inspection and portability.
12
13## Commands
14
15| Command | Description |
16|---------|-------------|
17| `outline add <text>` | Add a general entry (or show recent entries with no args) |
18| `outline plan <text>` | Record a plan or goal |
19| `outline track <text>` | Track progress on an item |
20| `outline review <text>` | Log a review or reflection |
21| `outline streak <text>` | Record a streak or habit check-in |
22| `outline remind <text>` | Set a reminder note |
23| `outline prioritize <text>` | Log a priority decision |
24| `outline archive <text>` | Archive an item for later reference |
25| `outline tag <text>` | Tag or categorize an entry |
26| `outline timeline <text>` | Record a timeline event or milestone |
27| `outline report <text>` | Log a report or summary |
28| `outline weekly-review <text>` | Perform or record a weekly review |
29| `outline stats` | Show summary statistics across all categories |
30| `outline export <fmt>` | Export all data in json, csv, or txt format |
31| `outline search <term>` | Full-text search across all log files |
32| `outline recent` | Show the 20 most recent activity entries |
33| `outline status` | Health check — version, data dir, entry counts, disk usage |
34| `outline help` | Show the built-in help message |
35| `outline version` | Print the current version |
36
37### How Entry Commands Work
38
39Every entry command (`add`, `plan`, `track`, `review`, `streak`, `remind`, `prioritize`, `archive`, `tag`, `timeline`, `report`, `weekly-review`) follows the same pattern:
40
41- **With arguments:** Appends a timestamped entry (`YYYY-MM-DD HH:MM|<text>`) to the corresponding `.log` file and shows the new total count
42- **Without arguments:** Shows the 20 most recent entries from that category's log file
43
44## Data Storage
45
46All data is stored in `~/.local/share/outline/` by default.
47
48Files created in the data directory:
49
50- **`add.log`**, **`plan.log`**, **`track.log`**, etc. — One log file per command category, each containing timestamped entries in `YYYY-MM-DD HH:MM|<text>` format
51- **`history.log`** — Audit trail of every command executed with timestamps
52- **`export.json`** / **`export.csv`** / **`export.txt`** — Generated by the `export` command
53
54### Export Formats
55
56- **json** — Array of objects with `type`, `time`, and `value` fields
57- **csv** — Header row (`type,time,value`) followed by data rows
58- **txt** — Human-readable sections grouped by category
59
60## Requirements
61
62- **bash** 4.0 or later (uses `set -euo pipefail`, `local` variables)
63- **grep** — used by the `search` command for case-insensitive matching
64- **Standard POSIX utilities** — `date`, `cat`, `echo`, `mkdir`, `wc`, `du`, `head`, `tail`, `basename`
65- No external API keys or network access required
66- No Python or Node.js dependencies
67
68## When to Use
69
701. **Daily task capture** — Quickly jot down tasks, ideas, or observations throughout the day using `add` or `plan`, then review with `recent`
712. **Habit tracking and streaks** — Use `streak` to check in on daily habits and `stats` to see your consistency over time
723. **Weekly reviews and retrospectives** — Use `weekly-review` to log reflections at the end of each week, then `search` to find patterns
734. **Project timeline management** — Use `timeline` to record milestones and `report` to log progress summaries for stakeholders
745. **Exporting data for analysis** — Use `export json` to pipe structured data into `jq`, dashboards, or spreadsheets for deeper analysis
75
76## Examples
77
78```bash
79# Add a task and a plan
80outline add "Set up CI pipeline for new repo"
81#=> [Outline] add: Set up CI pipeline for new repo
82#=> Saved. Total add entries: 1
83
84outline plan "Q2 roadmap: launch v2.0 by June"
85#=> [Outline] plan: Q2 roadmap: launch v2.0 by June
86#=> Saved. Total plan entries: 1
87
88# Track progress and tag it
89outline track "CI pipeline: tests passing, deploy step WIP"
90outline tag "ci-pipeline: infrastructure"
91
92# Set a reminder
93outline remind "Team standup at 10am tomorrow"
94#=> [Outline] remind: Team standup at 10am tomorrow
95#=> Saved. Total remind entries: 1
96
97# View statistics across all categories
98outline stats
99#=> === Outline Stats ===
100#=> add: 1 entries
101#=> plan: 1 entries
102#=> ...
103#=> Total: 5 entries
104#=> Data size: 4.0K
105
106# Export everything as JSON
107outline export json
108#=> Exported to /home/user/.local/share/outline/export.json (245 bytes)
109
110# Search across all logs
111outline search "pipeline"
112#=> Searching for: pipeline
113#=> --- add ---
114#=> 2025-03-18 14:30|Set up CI pipeline for new repo
115```
116
117## Configuration
118
119The data directory is hardcoded to `~/.local/share/outline/`. To use a custom location, modify the `DATA_DIR` variable in the script.
120
121## How It Works
122
1231. On every invocation, the tool ensures the data directory exists (`mkdir -p`)
1242. The first argument selects the command via a `case` dispatch
1253. Entry commands append a pipe-delimited line (`timestamp|text`) to their category-specific log file
1264. Every command also appends to `history.log` for auditing
1275. `stats` iterates over all `.log` files to produce aggregate counts
1286. `export` reads all `.log` files and writes a combined output in the chosen format
1297. All output goes to stdout for easy piping and redirection
130
131---
132
133Powered by BytesAgain | bytesagain.com | hello@bytesagain.com