Install
openclaw skills install palest-inkTrack and recall your daily activities including git commits, web browsing, shell commands, and VS Code edits. Use this skill whenever the user asks about their recent activity, wants a daily report or summary, asks "what did I do today/yesterday/this week", wants to find a specific commit or webpage they visited, asks about browsing history, needs to recall any past work activity, or queries about specific content they viewed online. Also trigger when the user mentions palest-ink, activity tracking, daily log, work journal, daily report, or activity summary. Trigger for questions like "which website had info about X", "when did I commit the code for Y", "show my git activity".
openclaw skills install palest-ink好记性不如烂笔头 — The faintest ink is better than the strongest memory.
Palest Ink tracks the user's daily activities automatically:
All data is stored locally at ~/.palest-ink/data/YYYY/MM/DD.jsonl.
Before answering any query, first check if Palest Ink is installed:
test -f ~/.palest-ink/config.json && echo "INSTALLED" || echo "NOT_INSTALLED"
If NOT installed, tell the user:
Palest Ink is not yet set up. To install, run:
bash <SKILL_PATH>/../../collectors/install.shThis will set up automatic tracking of git, browsing, and shell activity.
Then stop and wait for the user to install.
Run the report generator:
python3 <SKILL_PATH>/scripts/report.py --date today
For yesterday: --date yesterday
For a specific date: --date 2026-03-03
For the whole week: --week
Read the output and present it conversationally to the user. Highlight notable patterns (focused work sessions, frequent topics, etc).
Use the query tool to search activity records:
python3 <SKILL_PATH>/scripts/query.py --date today --type git_commit --search "plugin"
Common query patterns:
| User asks about... | Arguments |
|---|---|
| A git commit | --type git_commit --search "keyword" |
| A webpage about X | --type web_visit --search-content "keyword" |
| Shell commands | --type shell_command --search "keyword" |
| VS Code files | --type vscode_edit --search "keyword" |
| App focus / screen time | --type app_focus --summary |
| File changes in project | --type file_change --search "project" |
| Everything today | --date today --summary |
| Date range | --from 2026-03-01 --to 2026-03-07 |
Important: When the user searches for web page content (e.g., "which website talked about homebrew"),
use --search-content instead of --search. This searches within page content summaries and keywords,
not just URLs and titles.
Show collector status and data statistics:
python3 <SKILL_PATH>/scripts/status.py
If the output contains "CLEANUP RECOMMENDED", proactively tell the user:
"Your palest-ink data is approaching 2 GB. Would you like me to clean up older records?"
If the user agrees, first show a dry-run preview:
python3 ~/.palest-ink/bin/cleanup.py --dry-run
Present the preview (how many files, date range, records count, space to free). Then ask for explicit confirmation before actually deleting:
python3 ~/.palest-ink/bin/cleanup.py --force
Options:
--max-size N — threshold in GB (default: 2.0)--keep-days N — always keep the most recent N days (default: 30)--dry-run — preview only, no changes--force — skip the interactive prompt (use after user confirms in chat)If scripts fail or for simple lookups, read the JSONL files directly:
~/.palest-ink/data/YYYY/MM/DD.jsonlgrep "keyword" ~/.palest-ink/data/2026/03/03.jsonlts, type, source, datagit_commit — data: repo, branch, hash, message, files_changed, insertions, deletionsgit_push — data: repo, branch, remote, remote_urlgit_pull — data: repo, branch, is_squashgit_checkout — data: repo, from_ref, to_branchweb_visit — data: url, title, visit_duration_seconds, browser, content_summary, content_keywordsshell_command — data: command, duration_seconds (null if not available)vscode_edit — data: file_path, workspace, languageapp_focus — data: app_name, window_title, duration_secondsfile_change — data: path, workspace, language, eventWeb visits include a content_summary field (up to 800 chars of page text) and
content_keywords (extracted keywords). This enables content-based search.
Example: if user browsed a page about "Homebrew installation guide", the content_summary will contain the actual page text, making it searchable even if the URL/title don't mention it.