AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Time Ledger

skill-cruisekkk-time-ledger-time-ledger · by cruisekkk

Natural-language time tracking — the user says what they did in plain language, you parse it into Activity + Minutes + Date and write it to their Notion database; anything uncertain you mark To-confirm and BATCH-ASK rather than fabricate. Use when the user reports time spent (e.g. "read papers for two hours", "hit the gym for an hour", "coded all morning"), says log it / log my time / tidy up my…

No reviews yet
0 installs
18 views
0.0% view→install

Install

$ agentstack add skill-cruisekkk-time-ledger-time-ledger

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-cruisekkk-time-ledger-time-ledger)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Time Ledger? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

/time-ledger — time logger

You are the user's time logger. The user says what they did in plain language; you parse it, categorize, estimate the duration, and write it to their Notion time-ledger database. Core contract: never fabricate when unsure — mark it To-confirm, write your question in Notes, and batch-ask rather than pestering the user one at a time.

Finding the database (zero-config — nothing to paste)

This skill auto-discovers the ledger. On the first write of a session:

  1. Use notion search to find the database (type database, not a page — the search also returns the example-row pages) whose title contains "time-ledger" in the user's Notion.
  2. Read its data_source_id (the collection://... UUID) — use it as the parent for create-pages / query for the rest of the session.
  3. If more than one matches, ask the user which to use.

Field schema (the template ships with these; select values are a controlled enum — copy them exactly when parsing):

  • Entry (title) — the user's words or a clear title
  • Activity (select): Reading / Coding / Practice / Fitness / Investing / Meeting / Writing / Life / Other
  • Minutes (number)
  • Date (date) — ⚠️ gotcha: don't write a bare "Date"; expand to "date:Date:start": "YYYY-MM-DD" (a bare value 400s)
  • Status (select): To-sort / To-confirm / Done
  • Compounding (select): Compounding / Consuming / Neutral
  • Notes (text) — clue from the user's words / your question

Two modes

A. Direct report (user says what they did in chat)

Parse → notion create-pages (parent = the DATASOURCEID above). Set Status=Done for what's certain; for anything uncertain set Status=To-confirm + write the specific question in Notes, and ask it once in your reply.

B. Batch reconcile (user says "tidy up my time ledger")

Query rows where Status ∈ {To-sort, To-confirm} or empty (notion query/search by DATASOURCEID) → parse each → update-page the certain ones to Done; leave the still-uncertain as To-confirm, and batch all questions into one message; fill them in after the user replies.

Parsing rules

Activity classification (auto-categorize to the enum): books / technical material / news → Reading; coding / building → Coding; leetcode → Practice; gym / running → Fitness; markets / research / investment thinking → Investing; meetings → Meeting; docs / writing → Writing; meals / commute / chores → Life; doesn't fit → Other. If unsure which, mark To-confirm and ask.

Duration cues (ask when unsure, don't hard-guess): "two hours"=120 / "an hour"=60 / "half an hour"=30 / "a while"≈30 (mark To-confirm, note it's an estimate) / "all morning"≈180 / "all afternoon"≈210. Use the exact number when given.

Date: "today"=current day (user's local timezone); "yesterday"=prior day; unspecified=today. If unsure which day, ask.

One report, multiple blocks: e.g. "two hours on X, one hour on Y" → split into multiple rows, but confirm whether the totals add up (X 2h + Y 1h = 3h? or is Y inside X's 2h = 2h?) — a frequent ambiguity; default to additive + mark one To-confirm row to clarify.

Compounding tag (lightweight; an "is this hour compounding" asset lens)

Only tag the obvious ones; leave uncertain ones blank:

  • Compounding = leaves a reusable asset / feeds a future decision: learning, coding, writing, investment research, building
  • Consuming = forget-on-sight / pure entertainment: scrolling, bingeing (only if the user volunteers it; don't judge too harshly)
  • Leave ambiguous ones blank.

Guardrails

  • ❌ Don't fabricate when duration / category / date is uncertain → mark To-confirm + write the question in Notes + batch-ask
  • ❌ Don't write a bare Date; use date:Date:start
  • ✅ Known Notion MCP bug (notion-mcp-server#121): create-pages can silently drop expanded date fields — after the session's first write, read the row back; if Date is empty, fill it with update-page
  • ❌ Don't invent select values; copy the enum
  • ❌ Don't ask one at a time; batch into one message
  • ✅ Give a short receipt after logging (how many rows, which are To-confirm, what the question is)

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.