Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/dgilford/ai-science-toolkit/worklognpx skills add dgilford/ai-science-toolkit --skill workloggit clone --depth 1 https://github.com/dgilford/ai-science-toolkitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dgilford/ai-science-toolkit/worklog)<a href="https://agentmods.dev/skills/dgilford/ai-science-toolkit/worklog"><img src="https://agentmods.dev/badge/skills/dgilford/ai-science-toolkit/worklog.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00061 | $0.01659 |
| Opus 5 | $0.00030 | $0.00830 |
| Sonnet 5 | $0.00012 | $0.00332 |
| Haiku 4.5 | $0.00006 | $0.00166 |
Grade B, and why
worklog scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
`~/.claude/settings.json`, alongside the `ZOTERO_*` keys) — no personal How it starts
The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Capture one work-log entry into three targets. Distinguish two failure kinds:
- Misconfiguration is loud. If a target's env var is unset, that is a setup error — report it prominently so it gets fixed, don't skip it quietly.
- Transient failure is best-effort. If a configured target is momentarily unreachable (server down, Notion MCP disconnected), never block the caller — note it and move on. The local mirror is the source of truth.
An end-of-day cloud routine summarizes the Notion raw entries into narrative sections, so this skill only appends; it never summarizes.
Compose the entry
Determine what to log:
- If the caller (e.g.
/handoff) or the user supplied text or a summary, use it. - Otherwise, summarize the current thread of work yourself: what got done, key decisions, and the top next action.
Keep it tight: summary is 3-5 short bullets; next is the top 1-3 next actions.
Redact secrets — never put tokens, keys, passwords, or PII in the entry.
Configuration
Two targets are configured via env vars (set in the env block of
~/.claude/settings.json, alongside the ZOTERO_* keys) — no personal
infrastructure is hardcoded in this skill. If a var is unset, surface it
loudly as a setup error (worklog: <VAR> unset — this target is not configured; set it in ~/.claude/settings.json) so the gap gets fixed, rather
than silently dropping the target:
WORKLOG_SSH_TARGET—user@hostfor the server cache (e.g. a Tailscale host).WORKLOG_NOTION_HOME— the Notion "Work Journal" home page id (raw entries are appended to weekly sub-pages under it).
1 + 2 — Local mirror and server cache
Fill the two arrays with the composed content, then run:
DAY=$(date +%F)
PROJECT=$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")
ENTRY=$(printf '{"ts":"%s","project":"%s","cwd":"%s","summary":%s,"next":%s}' \
"$(date -Iseconds)" "$PROJECT" "$PWD" \
'["bullet one","bullet two"]' \
'["next action one"]')
# durable local mirror (.ai/ is gitignored) — always written
mkdir -p .ai && printf '%s\n' "$ENTRY" >> ".ai/worklog-$DAY.jsonl"
# best-effort ship to server cache (non-fatal; skipped if WORKLOG_SSH_TARGET unset)
if [ -n "${WORKLOG_SSH_TARGET:-}" ]; then
printf '%s\n' "$ENTRY" | ssh -o ConnectTimeout=6 -o BatchMode=yes \
"$WORKLOG_SSH_TARGET" \
"mkdir -p ~/worklog/inbox && cat >> ~/worklog/inbox/$DAY.jsonl" \
&& echo "worklog: shipped to server" \
|| echo "worklog: server unreachable — kept local copy at .ai/worklog-$DAY.jsonl"
else
echo "worklog: WORKLOG_SSH_TARGET unset — server cache not configured; set it in ~/.claude/settings.json (kept local copy at .ai/worklog-$DAY.jsonl)" >&2
fi
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 118 lines · 61 tokens per session scan B 2b70e81e6078
worklog is a skill published in the GitHub repository dgilford/ai-science-toolkit (62 stars, last pushed 16d ago), licensed MIT. It adds 61 tokens to every session and 1,659 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
browser-use
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work.
omh-automation-blueprint
This is a Hermes-native automation-blueprint workflow skill.
omh-morning-brief
This is a Hermes-native morning-brief workflow skill.
omh-deliverable-package
This is a Hermes-native deliverable-package workflow skill.
todos
This chat has a shared, live TODO plan — your tasks for the conversation, which the user also edits. Read this skill and reach for the todo tools whenever a request takes more than a couple of steps. It covers the plan model (group = task, items = its steps; loose items are the user's lane), how to work it: propose…
tokf-discover
Find missed token savings by scanning AI coding session files for commands that ran without tokf filtering.