Work Tracker

📊 Daily Overview

Total Activity: 9 commits across 2 repositories


🚀 GitHub Activity

1. propagate-skill 🔒 — 8 commits

fix(notify): attribute notifications correctly and make them actionable · 13db238

Notifications were posted with a bare osascript -e 'display notification'.
macOS attributes those to Script Editor, because that is osascript’s host
bundle — so clicking a propagate notification launched Script Editor with an
empty document. That was the reported symptom, and even a “working” click did
nothing useful.

notify() now prefers terminal-notifier (already installed at
/opt/homebrew/bin/terminal-notifier) with -sender so attribution is correct and
-execute so clicking opens the relevant ledger. It falls back to osascript when
terminal-notifier is absent, and never throws either way — this runs inside a
launchd job where an exception is a silent outage.

feat(skills): inventory ~/.claude/skills with provenance and liveness · 52ee6a1

Adds cli.mjs skills [--json], backed by lib/skills-scan.mjs. Read-only.

The skills directory had grown to 168 entries assembled by three uncoordinated
installers with no shared record, which is documented root cause #4 (conventions
layered, none retired) applied to skills. The three are distinguishable purely
by symlink shape, so classifyInstaller() keys on that:

npx skills the DIRECTORY is a symlink into ~/.agents/skills;
provenance in ~/.agents/.skill-lock.json v3
gstack-relink real dir whose SKILL.md is a symlink into the gstack checkout
by hand real dir, real SKILL.md, no provenance anywhere

feat(skills): add transcript probe; never-invoked becomes an AND of two signals · a19cfac

Adds probeTranscripts(), which counts explicit Skill tool calls in
~/.claude/projects/**/*.jsonl and attributes them to sessions. neverInvoked
is now usageCount === 0 && transcriptCount === 0.

The AND matters because the reaper will delete on this flag and neither signal
is trustworthy alone: skillUsage lives in ~/.claude.json, a file we do not
control and never write; transcripts only cover the era since the Skill tool
existed. Either one alone has a failure mode that ends in deleting something
wanted, so evidence from either protects a skill. There is a test per branch.

feat(index): add a derived skill table and three skill queries · e70dfbb

Skills now land in index.db alongside the ledger/decision/state tables, so the
inventory is queryable rather than only printable. Adds querySkillsNeverInvoked
(the reaper’s future candidate list), querySkillsNoProvenance, and
querySkillProbeDisagreement.

THE SWEEP DEFAULTS TO OFF, and that is the important decision here. Every other
input to rebuildIndex is confined to roots; the skill sweep instead reads
global machine state — ~/.claude/skills, ~/.claude.json, and 861 MB of
transcripts.

feat(digest): SKILLS block — diff-only, silent on a quiet day · 1c80717

Surfaces the skill inventory through the channel that already exists and is
already read. No new launchd job; com.rupali.propagate-digest.plist is
unchanged. This ecosystem has five components that were built, scheduled and
never adopted, and a sixth daemon to report on skills would be the joke telling
itself.

The block reports only what CHANGED: skills that appeared, skills that
disappeared, and two alarms. It deliberately never restates “92 skills, 36
never invoked” — a digest that repeats standing facts every morning is
wallpaper within a week, which is exactly how PROPAGATION_CROSS_LEDGER.md came
to read “Watcher healthy” for a month.

feat(skills): quarantine tier, promotion, and a dry-run-by-default reaper · 2b2c772

Phase 2 of the skill registry. Auto-created skills will land in the quarantine
plugin of the Tathya marketplace and have to earn their way into tathya.

WHY A MARKETPLACE PLUGIN RATHER THAN ~/.claude/skills. Claude Code discovers
top-level skills by directory presence, so anything written there is instantly
live under a bare name and can shadow one of the 92 established skills. A plugin
registers as quarantine:<name> instead: namespaced, collision-proof, and
visibly provisional at the call site.

feat(skills): creation pipeline + armed reaper; NO frequency detector, measured · 2780ee0

Phase 3. The reaper now runs unattended in the existing digest. Creation is a
pipeline (gate draft validate quarantine) invoked explicitly, not by a
background detector — and that is the substantive finding of this commit.

WHY THERE IS NO DETECTOR. The plan called for one that spots a repeated
multi-step procedure in transcripts and codifies it. Measured against the real
data before building it, the premise does not hold:

feat(dist): make propagate installable as a marketplace plugin · ed897eb

i need to use it elsewhere — this makes that true. The skill was portable in
principle and broken in practice: four things pinned it to this machine, each
of which fails differently and one of which fails SILENTLY.

  1. SKILL_DIR was hardcoded to ~/.claude/skills/propagate, so the skill could
    not find itself anywhere else — installed as a plugin, cloned for
    development, or run from a worktree, every derived path pointed at a
    directory that did not exist. Now self-locates via import.meta.url.

2. Manav-portfolio 🔒 — 1 commits

fix(dock,collaborations): fit mobile dock labels, surface crew credit links · 1c7ef26

The bottom dock’s flat 12px font let “Filmography”/“Collaborations” wrap
or ellipsis-truncate on phones — no legible size fits “Collaborations” in
a ~78px flex slot. Give the dock its own short labels (dockLabel on
NavItem) while the desktop Topbar keeps the full words.

Collaborations rows now render WorkLinks (IMDb/YouTube/etc.) as outbound
proof of each credit, right-aligned. Split the row markup since nesting
WorkLinks’ tags inside the row’s own would be invalid,
un-nestable HTML.

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01UHkSigJkdoJv5BwwC4Pqiw


📈 Development Analytics

Daily Summary

MetricToday
Commits9
Merges0
Skill runs0
Decisions0
Eurekas0
CEO plans0
Notes touched0

Decisions logged today

None today.

Eurekas

None today.

Strategic plans authored

None today.

Notes touched

None today.

Running totals (as of this date)

Active days last 90:           68 / 90  (substantive)
Days with any signal last 90:  68 / 90
Skill runs (since 2026-03-25):  77
Commits this year (authored):  1960
Decisions logged this year:    46
Eurekas this year:             5
CEO plans authored this year:  14
Projects touched this year:    66
Top projects last 90:          VipinKaushik (25d), astroacharya (20d), SSJK-mb (20d), vipin-kaushik-content (18d), SSJK-workspace (12d)

💭 My Notes

[Your own thoughts, observations, or context for this day — this section is never overwritten by automation]