Project

Chronos (Second-Brain)

Vault: second_brain   Path: Chronos

index.md

Chronos

Chronos is a Claude Code plugin bundling two skills: gws (Google Workspace CLI mechanics — Gmail, Drive, Docs, Sheets, Slides, Calendar CRUD) and meeting-scheduler (contact resolution, cross-timezone freebusy, slot-ranking, event booking — built on top of gws's calendar commands). Lives in the public GitHub repo arijitchowdhury80/arijit-skills, under plugins/chronos/.

Status

Version 1.0.2, on open PR (#1), not yet merged to main. Installed locally via the real claude plugin CLI (marketplace-add + install, scope user), currently pointed at the local branch checkout rather than main since the PR hasn't landed yet.

What's been verified, and how (not asserted — tested)

  • Real Python test suite, no mocking of the actual logic under test: 59 passed / 9 skipped on a plain pytest run (integration tests requiring live gws auth correctly skip by default), 68 passed with --run-integration.
  • Fresh third-party install, actually simulated: a fake user ("Taylor Fake," London, a fictional company domain) with HOME pointed at an isolated temp directory and zero files shared with this machine — owner resolution and named-contact resolution both correct against that fake data. Proves the plugin doesn't secretly depend on anything of Arijit's.
  • Plugin update pipeline, tested live, not assumed: bumped 1.0.0 → 1.0.1 → 1.0.2 via claude plugin update for real, twice, and inspected the result each time rather than trusting the CLI's success message.
  • No duplicate skill registration: confirmed the old loose ~/.claude/skills/gws and ~/.claude/skills/meeting-scheduler are fully retired (moved to ~/AI-Development-OLD/Scheduler/_deprecated-local-skill-backups/, also mirrored to the Dropbox copy) — only the plugin-installed copies exist now.

Two real bugs found by testing, not by inspection — both root-caused, not patched

  1. Live OAuth secret hardcoded in plaintext. The original gws skill.md had a real Google OAuth client ID + secret inline, about to be copied into this public repo. Root-cause fix: moved to ~/.config/gws/.env (mode 600, gitignored, never committed), skill now sources it.
  2. Plugin updates silently destroy local config. config/team.json was originally placed inside the plugin's own install directory. claude plugin update replaces the entire installed payload on every version bump — so the real team directory (Sajid, Debanshi, Piyush, real timezones) would have been wiped on the very next update, with no warning. Caught by actually running the update, not by reading the code. Root-cause fix: resolve_contact.py's CONFIG_PATH now points at ~/.config/chronos/team.json, outside any plugin-versioned directory — same pattern as the gws .env fix.

What a third party actually has to do to use this

  1. claude plugin marketplace add arijitchowdhury80/arijit-skills (public, no auth to read)
  2. claude plugin install chronos@arijit-skills
  3. Register their own Google Cloud OAuth client, put it in their own ~/.config/gws/.env (inherent to OAuth — can't be shared, not a plugin limitation)
  4. Copy project/config/team.json.example~/.config/chronos/team.json, mark themselves "owner": true
  5. From there: natural language in their own Claude session — no special invocation syntax needed, the skill description fields do the matching (chronos:gws, chronos:meeting-scheduler if explicit invocation is ever needed)

Invocation architecture (a real distinction that came up)

A Claude Code skill is a markdown file — it has no life outside an LLM session reading and following it. It cannot be called by an external app/dashboard directly, no matter how it's packaged. Two coherent ways an external system can use this: - (a) The external system's own backend runs a Claude Agent SDK / Claude Code session with this plugin installed, and that Claude instance invokes the skill via natural language — same mechanism as this session. This is Arijit's actual intended architecture (AI-OS/dashboard's backend is itself Claude-driven). - (b) Wrap the underlying deterministic scripts (resolve_contact.py, find_slots.py, render_options.py, gws CLI — all already tested, zero LLM involved) in a real API service, for cases with no Claude in the loop at all.

Not yet built, not yet asked for: a formal trigger-precision eval (skill-creator's eval tooling) for the two skills' natural-language matching — the mechanism is proven to work generally in this environment, but hasn't been benchmarked specifically for these two.


Timeline (append-only, cited)

  • 2026-07-07 · Built and installed Chronos. See log.md this date for the full sequence (Harris/Adobe email drafting → meeting-scheduler skill discovery → path/credential bugs found and fixed → composite plugin design decided (name: Chronos) → real plugin install/update/portability testing → AI-Development-OLD folder cleanup as a related but separate side-thread). Memory: feedback_no_secrets_in_skill_files, feedback_gws_reply_all_cc_bug, feedback_gws_attach_cwd_restriction, feedback_verify_scheduling_and_contacts, feedback_shared_repo_concurrent_sessions. PR: arijit-skills#1 (open, not merged).

Folder catalog (auto-added 2026-07-07 clean-brain — every note must be reachable from its index)

All files (2)