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 |
|---|
| INLINECODE0 | Add a general entry (or show recent entries with no args) |
| INLINECODE1 |
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 timestampsexport.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, INLINECODE58 - No external API keys or network access required
- No Python or Node.js dependencies
When to Use
- 1. Daily task capture — Quickly jot down tasks, ideas, or observations throughout the day using
add or plan, then review with INLINECODE61 - 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
CODEBLOCK0
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
- 1. 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 - INLINECODE76 iterates over all
.log files to produce aggregate counts - INLINECODE78 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
大纲
一个用于捕捉、规划、追踪和审查任务与想法的生产力工具包。每个命令类别维护其自身带时间戳的日志文件,因此你可以按目的组织条目——计划、审查、提醒、标签、时间线等。包含内置统计、多格式导出、全文搜索和每周审查支持。
所有操作均记录时间戳并本地存储在平面文件中,便于检查和便携。
命令
| 命令 | 描述 |
|---|
| outline add <文本> | 添加一个通用条目(无参数时显示最近条目) |
| outline plan <文本> |
记录一个计划或目标 |
| outline track <文本> | 追踪某个项目的进展 |
| outline review <文本> | 记录审查或反思 |
| outline streak <文本> | 记录连续打卡或习惯签到 |
| outline remind <文本> | 设置提醒笔记 |
| outline prioritize <文本> | 记录优先级决策 |
| outline archive <文本> | 归档项目以备日后参考 |
| outline tag <文本> | 为条目添加标签或分类 |
| outline timeline <文本> | 记录时间线事件或里程碑 |
| outline report <文本> | 记录报告或总结 |
| outline weekly-review <文本> | 执行或记录每周审查 |
| outline stats | 显示所有类别的汇总统计 |
| outline export <格式> | 以 json、csv 或 txt 格式导出所有数据 |
| outline search <词条> | 在所有日志文件中进行全文搜索 |
| outline recent | 显示最近 20 条活动条目 |
| outline status | 健康检查——版本、数据目录、条目数量、磁盘使用情况 |
| outline help | 显示内置帮助信息 |
| outline version | 打印当前版本 |
条目命令的工作方式
每个条目命令(add、plan、track、review、streak、remind、prioritize、archive、tag、timeline、report、weekly-review)遵循相同的模式:
- - 带参数时: 将带时间戳的条目(YYYY-MM-DD HH:MM|<文本>)追加到对应的 .log 文件,并显示新的总计数
- 无参数时: 显示该类别日志文件中最近的 20 条条目
数据存储
默认情况下,所有数据存储在 ~/.local/share/outline/ 中。
在数据目录中创建的文件:
- - add.log、plan.log、track.log 等——每个命令类别一个日志文件,每个文件包含格式为 YYYY-MM-DD HH:MM|<文本> 的带时间戳条目
- history.log——每个执行命令的审计追踪,包含时间戳
- export.json / export.csv / export.txt——由 export 命令生成
导出格式
- - json——包含 type、time 和 value 字段的对象数组
- csv——标题行(type,time,value)后跟数据行
- txt——按类别分组的人类可读章节
要求
- - bash 4.0 或更高版本(使用 set -euo pipefail、local 变量)
- grep——由 search 命令用于不区分大小写的匹配
- 标准 POSIX 工具——date、cat、echo、mkdir、wc、du、head、tail、basename
- 无需外部 API 密钥或网络访问
- 无需 Python 或 Node.js 依赖
使用场景
- 1. 每日任务捕捉——使用 add 或 plan 快速记录一天中的任务、想法或观察,然后使用 recent 进行审查
- 习惯追踪和连续打卡——使用 streak 打卡日常习惯,使用 stats 查看长期一致性
- 每周审查和回顾——使用 weekly-review 在每周结束时记录反思,然后使用 search 查找模式
- 项目时间线管理——使用 timeline 记录里程碑,使用 report 记录进度总结供利益相关者查看
- 导出数据进行分析——使用 export json 将结构化数据导入 jq、仪表板或电子表格进行深入分析
示例
bash
添加任务和计划
outline add 为新仓库设置 CI 流水线
#=> [Outline] add: 为新仓库设置 CI 流水线
#=> 已保存。总 add 条目数:1
outline plan Q2 路线图:在 6 月前发布 v2.0
#=> [Outline] plan: Q2 路线图:在 6 月前发布 v2.0
#=> 已保存。总 plan 条目数:1
追踪进度并添加标签
outline track CI 流水线:测试通过,部署步骤进行中
outline tag ci-pipeline: 基础设施
设置提醒
outline remind 明天上午 10 点团队站会
#=> [Outline] remind: 明天上午 10 点团队站会
#=> 已保存。总 remind 条目数:1
查看所有类别的统计信息
outline stats
#=> === Outline 统计 ===
#=> add: 1 条条目
#=> plan: 1 条条目
#=> ...
#=> 总计:5 条条目
#=> 数据大小:4.0K
以 JSON 格式导出所有内容
outline export json
#=> 已导出到 /home/user/.local/share/outline/export.json(245 字节)
在所有日志中搜索
outline search 流水线
#=> 正在搜索:流水线
#=> --- add ---
#=> 2025-03-18 14:30|为新仓库设置 CI 流水线
配置
数据目录硬编码为 ~/.local/share/outline/。要使用自定义位置,请修改脚本中的 DATA_DIR 变量。
工作原理
- 1. 每次调用时,工具确保数据目录存在(mkdir -p)
- 第一个参数通过 case 分发选择命令
- 条目命令将管道分隔的行(timestamp|text)追加到其特定类别的日志文件
- 每个命令还会追加到 history.log 以进行审计
- stats 遍历所有 .log 文件以生成汇总计数
- export 读取所有 .log 文件并以所选格式写入组合输出
- 所有输出发送到 stdout,便于管道和重定向
由 BytesAgain 提供支持 | bytesagain.com | hello@bytesagain.com