log-time — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited log-time (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are helping the user reconstruct what they actually worked on across past days and turn it into paste-ready time-tracker entries (Redmine by default — any tracker their config describes). The skill supplies the mechanics — preflight, parallel evidence gathering, synthesis, allocation, emit. The user's config supplies every rule — which sources to check, which tickets to log against, how a day should add up, and what an entry looks like.
This is an accuracy-over-speed workflow. Cross-reference everything, flag uncertainty, never pad.
~/.claude/log-time/config.md is free-form markdown written by the user (or the onboarding wizard). Read it top to bottom and treat it as instructions: its sources, ticket targets, day rules, skip rules, and output style override every default in this file.~/.claude/shared/identity.json. Never write time logs into any tracker — output is paste-ready text the user applies themselves. The only files this skill writes are its own config (via --onboard / --config, with confirmation) and per-run artifacts.Run this before anything else, in every mode:
~/.claude/log-time/config.md. If present, internalize every section — sources, targets, day rules, output style, plus any free-form rules that don't fit those headings (they are equally binding).--status: tell the user there is no config yet, switch directly into the ## Mode: --onboard flow, and only after the config file is written resume what they originally asked for. Never build a time-log without a config on disk; never silently substitute defaults. (--status just reports the missing config.) The wizard's steps remain individually skippable — skipped sections become commented placeholders — so even a minimal pass produces a config and this forced detour happens exactly once.~/.claude/shared/identity.json if it exists (read-only — this skill never writes it) to learn the user's name/email for matching calendar attendance and tracker activity. Do not HALT if it is missing — proceed and resolve "me" per-source at runtime. Users of the clickup or g-event plugins can run their onboard identity step to create it.Parse $ARGUMENTS first:
| Arguments | Mode | |||
|---|---|---|---|---|
| `--onboard [sources \ | targets \ | day-rules \ | output]` | Onboarding wizard (writes config) |
--config <plain-text change> | Quick config edit (writes config after confirm) | |||
--status | Read-only health check | |||
| anything else (date range, empty) | Default: build the time-log |
A linear flow with one parallel fan-out. Per-run artifacts go to the run directory: ~/.claude/log-time/runs/<range-label>/ unless the config names a different location.
Probe every source the config lists in parallel, each with the smallest possible read (list one event, fetch one task, stat one file). Produce a table: [OK | BROKEN | OFF] <source> — <note>.
For each BROKEN source: show the fix hint (the config may carry one per source — e.g. a re-auth command), then ask the user whether to fix it or proceed without it. Never silently proceed with a degraded source set — the user decides.
Parse the date range from the invocation ("this week", "jun 2-6", "yesterday"). If absent, ask via AskUserQuestion (today / yesterday→today / past N working days / custom).
Show a compact summary of the rules that will apply this run — pulled from config, not invented: working days, daily target (or "evidenced-only"), skip rules, output style. One yes/no to confirm or adjust. Per-run adjustments apply to this run only unless the user asks to persist them (then route through the --config write path).
Write scope.md to the run directory.
For each OK source, launch one sub-agent (sonnet — never opus or haiku) in the same message so they run in parallel. Each sub-agent reads its single source for the full date range and writes one artifact (<source>.md) to the run directory: what the source shows, per day, with timestamps/durations/identifiers verbatim. Keep the main context clean — only artifacts come back.
Source playbooks (apply when the config names the source; these are also what --onboard auto-detects):
find-call plugin is installed, prefer it for meeting depth — it pulls notes, transcripts, and resources per call. Recommend a calendar connection + find-call to any user who logs meeting time; it is the single highest-value source for time-certainty.~/.claude/projects/*/*.jsonl files modified in range. Read FIRST LINE + LAST LINE ONLY — never the full file (session files can exceed 100MB). Compute the session span per project directory per day. Flag raw spans the config would consider implausible.Read all gather artifacts and build one evidence map per day in evidence.md: what each source shows, cross-checks between them, explicit conflicts (sources disagree) and gaps (time no source accounts for). Apply the config's mapping rules (e.g. "repo X → ticket Y", "meetings titled Z → project W") if it has any; flag anything unmapped instead of guessing.
Apply the user's day rules from config, per day:
--config write path.Adaptive target suggestion: if the user corrects day totals to the same number repeatedly — within this run or visibly across runs — suggest adding that number as a steady daily target to config. Suggest once; never silently apply it.
Write allocation.md with every decision documented.
Two outputs, produced together and verified to agree:
daily-log.md in the run directory: rules applied, per-day breakdown, confidence legend and per-entry ratings, "rock-solid vs inferred" sections. Confidence markers live here, not in the tracker-bound text. Tell the user the path.Entry format comes from the config's output style section. Defaults when the config doesn't say otherwise:
[dd.mm] <text>) is suggested, not mandatory — it helps when entries are bulk-imported later, and the config can turn it off or reshape it.Four steps, each individually skippable — a skipped step writes a commented placeholder section the user can fill later. Sub-arg re-runs a single step. Use AskUserQuestion throughout; never assume answers. See references/config-guide.md for what each section may contain (illustrative mock examples only).
find-call plugin, tracker MCPs, ~/.claude/projects session files, notetaker MCPs) and present the findings; the user toggles each on/off and may add any number of custom sources in plain text (what it is, how to read it, what evidence it gives). If no calendar source is found, recommend connecting one and installing find-call — call evidence is the strongest time signal.Compose the full ~/.claude/log-time/config.md, show it to the user, and write only after explicit confirmation. If a config already exists, show a diff against it instead of overwriting blind.
This mode is also entered automatically by Step 0 whenever no config exists — finish the wizard, then return to whatever the user originally asked for.
The quick-edit path — settings must stay easy to change. Read the current config, apply the user's plain-text change to the relevant section (or a new free-form section if it fits nowhere), show a before/after diff, and write only after explicit confirmation. This and --onboard are the only write paths to the config file.
Read-only — writes nothing. Report: config file present or not, which sections it contains, identity file present or not, then the same parallel minimal-read probes as S1 with the [OK | BROKEN | OFF] table and per-source fix hints.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.