Chronos (Second-Brain)
log.md
Chronos — Log
2026-07-07 — Built, hardened, and installed the Chronos plugin
- Started from an email-drafting task (Harris/Reseller thread, then Adobe/Spectrum thread) using the
gwsandtone-of-voiceskills; along the way found and fixed thegws +reply-allCc-not-carrying bug and the--attachcwd restriction. - Meeting-scheduling need surfaced the existing
meeting-schedulerskill, which turned out to reference a stale absolute path (~/AI-Development/Scheduler/— the parent folder had been renamed toAI-Development-OLD). Fixed the path; also found and root-cause-fixed a live Google OAuth client secret hardcoded in plaintext ingws's skill.md — moved to~/.config/gws/.env(0600, gitignored). - User directed: don't keep gws and meeting-scheduler as separate skills, bundle them into one composite plugin with an explicit dependency. Named it Chronos (user's pick, over Daybook/Meridian options offered).
- Built
plugins/chronos/in the publicarijit-skillsrepo:.claude-plugin/plugin.json,skills/gws/SKILL.md,skills/meeting-scheduler/SKILL.md+ its full backing project (src/tests/docs), repo-root.claude-plugin/marketplace.json(the actual install entry point). Opened PR #1. - User pushed hard on "is this actually distributable" — audit found it wasn't: hardcoded absolute paths throughout meeting-scheduler's SKILL.md, hardcoded owner identity (Arijit's email/timezone baked into every step instead of resolved generically), lowercase
skill.mdinstead of the realSKILL.mdplugin convention, a non-standard field inplugin.json. Fixed all of it; addedresolve_contact.py --owner(reads team.json'sowner: trueflag) so no identity is ever hardcoded. - Caught two more real bugs by actually running the test suite rather than trusting it: a PII-scrub pass I'd done earlier had silently broken two tests (querying a name that no longer existed in the fixture), which fell through to a live
gwssubprocess call against real calendar data — mocked it out. Also foundconftest.pyclaimed integration tests "auto-skip" but never implemented that — added realpytest_addoption/pytest_collection_modifyitemslogic so a plainpytestrun is safe with no gws auth configured. - Did the actual
claude pluginCLI install (not simulated): marketplace-add pointed at the local branch (PR not merged tomainyet), install, verified viaclaude plugin list/details/validate. Confirmed empirically that a newly-installed plugin does NOT hot-load into an already-running session (tried invokingchronos:gwsmid-session, gotUnknown skill) — needs a restart, which happened between turns and confirmed working (chronos:gws/chronos:meeting-schedulershowed up as available skills afterward). - Retired the old loose
~/.claude/skills/gwsand~/.claude/skills/meeting-scheduler(moved fully outside the skills-scanning path, not just renamed) to eliminate duplicate registration — verified zero duplicates. - User explicitly asked me to test the update flow. Did: bumped 1.0.0→1.0.1, ran
claude plugin updatefor real — and it exposed a second real bug:claude plugin updatereplaces the entire installed plugin payload per version, soteam.jsonplaced inside the plugin's own directory doesn't survive an update. Root-cause fixed: moved to~/.config/chronos/team.json. Bumped to 1.0.2, updated again, re-verified real data resolves correctly post-update. - Final proof requested: simulated an actual fresh third-party user (
HOMEpointed at an isolated temp dir, fake team.json with a fictional owner in London and a colleague in Tokyo, zero shared state with this machine) — owner and named-contact resolution both correct. This is the concrete answer to "will someone else who installs this actually be able to use it." - Clarified with the user (after some back-and-forth where I over-explained something he already understood): a Claude Code skill is not a callable API — it only has effect when an LLM reads and follows it. His actual architecture (AI-OS/dashboard's backend is itself Claude-driven) means his dashboard's Claude instance would invoke this the same way this session does; that's already fully supported, nothing further to build for that path.
- Side-thread, same session: an unrelated but connected cleanup of
~/AI-Development-OLD/(the folder the Scheduler project's old absolute path pointed at) — seeProjects/AI-OS/log.mdfor that thread; it's about disk hygiene, not Chronos itself, but is why the stale-path bug surfaced in the first place. - Not done yet: PR #1 not merged. No formal skill-trigger-precision eval run. RAG/Scout/PIP (unrelated folders touched during the AI-Development-OLD side-thread) still have real content gaps not yet synced to Dropbox.